Поиск и возврат нескольких строк в текстовом файле

offset=$(date +%-z) даст результат -400в вашем случае.

-после символа %удаляет заполнение нулями.

[1] Соответствующий ответ

1
21.12.2019, 23:26
3 ответа

С Perl:

$ perl -lnE 'say for map { "/home/user". $_ } /Data="(.*?)"/g' file
/home/user/dataset/0001
/home/user/dataset/0002
/home/user/dataset/0003
0
28.04.2021, 23:26

Я бы не рекомендовал делать это таким образом, потому что

но просто для иллюстрации, используя повторное применение оператора 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
0
28.04.2021, 23:26

Вот некоторые из методов, которые вы можете использовать для получения вывода:

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
0
28.04.2021, 23:26

Теги

Похожие вопросы