offset=$(date +%-z)
даст результат -400
в вашем случае.
-
после символа %
удаляет заполнение нулями.
С Perl:
$ perl -lnE 'say for map { "/home/user". $_ } /Data="(.*?)"/g' file
/home/user/dataset/0001
/home/user/dataset/0002
/home/user/dataset/0003
Я бы не рекомендовал делать это таким образом, потому что
но просто для иллюстрации, используя повторное применение оператора bash =~
:
#!/bin/bash
pfx="/home/user"
re='Data="([^"]*)"'
while read -r line; do
while [[ $line =~ $re ]]; do
printf '%s%s\n' "$pfx" "${BASH_REMATCH[1]}"
line="${line#*${BASH_REMATCH[0]}}"
done
done < file
Вот некоторые из методов, которые вы можете использовать для получения вывода:
perl -lsne '
() = /Data="(.*?)"(?{print "$v$1"})/g;
' -- -v="/home/user" file
grep -oP 'Data="\K[^"]+(?=")' file |\
xargs printf '/home/user%s\n'
sed -nEe '
s|Data="([^"]+)"|\n/home/user\1\n|
s/.*\n(.*\n)/\1/
P;D
' file
/home/user/dataset/0001
/home/user/dataset/0002
/home/user/dataset/0003