탭 문자가 포함된 정확한 문구가 포함된 줄을 추출합니다.

탭 문자가 포함된 정확한 문구가 포함된 줄을 추출합니다.

다음 줄을 포함하는 파일이 있습니다

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

관련 정보