다음 줄을 포함하는 파일이 있습니다
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
정확한 문구 "4[tab]H"(따라서 "4[tab]H[tab]4"가 됨)로 시작하는 마지막 줄만 다른 파일로 추출하고 싶습니다. 나는 시도했다:
grep "^4*.H" filein.in | tail -1 >> fileout.out
하지만 "44[tab]H[tab]5"를 추출합니다. 정확한 문자열 "4[tab]H"로 시작하는 마지막 줄을 추출하려면 이 정보가 필요합니다.
답변1
ksh93/zsh/bash/mksh/FreeBSD sh에서:
grep $'^4\tH' filein.in | tail -n 1
또는 어떤 쉘에서든:
awk '/^4\tH/ { line=$0; }; END { if(line!="") print line; }' filein.in
답변2
GNU sed 사용
sed '/^4\tH/h;$bA;N;D;:A;x;/^$/d' infile
답변3
tac
다음 을 사용하여 입력 파일을 한 줄씩 되돌릴 수도 있습니다.
$ # 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