最初の行と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この目的のために1行を使用できます。

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

関連情報