첫 번째 줄과 grep 쿼리 값을 표시하는 cat 파일

첫 번째 줄과 grep 쿼리 값을 표시하는 cat 파일

file.txt에 다음 구조가 있습니다.

NTL|OPC|RN1|CNL|NUE|NUF|TPB|EIP
11212455464       |16384|55320|     |2799819E405       |                  |2|                                                  
32545687784       |16384|55320|     |1194155B581       |                  |2|                                                  
54565487788       |16384|55321|     |8599132D051       |                  |2|                                                  
23154688789       |4013|55115|11529|163624D585        |16D7620595        |1| 
...

나는 이 결과를 원합니다(제목과 쿼리 값)

NTL|OPC|RN1|CNL|NUE|NUF|TPB|EIP
23154688789       |4013|55115|11529|163624D585        |16D7620595        |1| 

나는 이런 것을 시도했다

head -1 file.txt | grep 23154688789

하지만 작동하지 않습니다.

답변1

액세스할 수 있는 경우 sed라인 1과 일치하는 라인을 인쇄하도록 할 수 있습니다.

sed -n -e '1p;/23154688789/p' file.txt

-n지시가 없는 한 출력을 인쇄하지 않도록 지시하고 1p라인 1을 인쇄하고 /23154688789/p해당 패턴과 일치하는 모든 행을 인쇄합니다.

답변2

헤드 코드에서 '|' 및 ';'을 바꾸면 첫 번째 줄이 제공되고 이를 grep으로 연결하면 첫 번째 줄에서만 grep 검색이 수행됩니다. 다음과 같은 것이 필요합니다.

head -n 1 file.txt ; grep 23154688789 file.txt

답변3

awk명령은 이를 허용합니다. 여기서 레코드 번호( NR)가 1이거나 첫 번째 필드에서 일치하는 항목을 얻으면 다음 줄이 출력됩니다.

awk -v id=23154688789 'NR==1 || $1==id'

결과

NTL|OPC|RN1|CNL|NUE|NUF|TPB|EIP
23154688789       |4013|55115|11529|163624D585        |16D7620595        |1|

답변4

가설오직"NTL"로 시작하는 줄이 헤더 줄이 되며, grep이 목적으로 한 줄을 사용할 수 있습니다.

$ grep -E '^NTL|23154688789' file.txt
NTL|OPC|RN1|CNL|NUE|NUF|TPB|EIP
23154688789 |4013|55115|11529|163624D585 |16D7620595 |1| . . .
$

관련 정보