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