No ksh93 / zsh / bash / mksh / FreeBSD sh:
grep $'^4\tH' filein.in | tail -n 1
Ou em qualquer shell:
awk '/^4\tH/ { line=$0; }; END { if(line!="") print line; }' filein.in
Eu tenho um arquivo que contém as seguintes linhas
50[tab]H[tab]1
44[tab]H[tab]2
4[tab]H[tab]3
4[tab]H[tab]4
44[tab]H[tab]5
234[tab]H[tab]6
Eu gostaria de extrair apenas a última linha que começa com a frase exata "4 [tab] H" (então isso seria "4 [tab] H [tab] 4") em outro arquivo. Eu tentei:
grep "^4*.H" filein.in | tail -1 >> fileout.out
mas em vez disso, extrai "44 [tab] H [tab] 5". Eu preciso extrair a última linha que começa com a string exata: "4 [tab] H".
Com o gnu sed
sed '/^4\tH/h;$bA;N;D;:A;x;/^$/d' infile
Você também pode inverter a linha do arquivo de entrada usando tac
e depois obter a primeira correspondência
$ # add another \t after H if needed
$ tac ip.txt | grep -m1 $'^4\tH'
4 H 4
$ tac ip.txt | awk -F'\t' '$1=="4" && $2=="H"{print; exit}'
4 H 4
Tags grep text-processing