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| . . .
$