Eu tenho um arquivo de log como abaixo.
130023432 195047 /media/ismail/SSDWorking/book-collection/_Books/book 1.epub
130023433 195047 /media/ismail/SSDWorking/book-collection/_Books/book 2.epub
130023431 195047 /media/ismail/SSDWorking/book-collection/_Books/book 3.epub
Eu tenho uma variável,var=130023432
Quero dizer se a primeira palavra for igual a $var
, imprima todas, exceto as duas primeiras palavras.
Então, neste caso, a saída será:
/media/ismail/SSDWorking/book-collection/_Books/book 2.epub
O que eu tentei até agora é, grep -oP "(?<=$var \d+ ).*$'"
mas dá errogrep: lookbehind assertion is not fixed length
Como posso conseguir isso?
Você pode usar
awk
para isso.Saída usando seu exemplo
Eu evitei a
awk -v var="$var" '...'}
construção porque-v
processa seus valores para barras invertidas, etc. enquanto uma variável de ambiente é deixada intocada. Se você realmente deseja seguir esse caminho, tente isso (não POSIX):Com este curto
awk
(sub
ésed
como, para substituir um padrão ou um regex):ou simplesmente:
sed
pcregrep
grep
awk
Saída