最初の単語がファイルの最初の単語であるすべての行を印刷するには?

最初の単語がファイルの最初の単語であるすべての行を印刷するには?

sort.txt次の内容を含むテキストファイルがあります。

2 Jack
2 Naomi
2 Tina
1 John
1 Tyler

で始まるすべての行を印刷したいのですが、2問題は数字が必ずしもそうでない可能性が2あります。最初の単語が最初の行と同じすべての行を印刷したいと思います。したがって、最初の単語が裏面3で始まるすべての行を印刷します3。私は成功せずにこれを試しました。

firstWord=awk '{print $1;}'
egrep "^$firstWord" sort.txt

ベストアンサー1

これはとても些細なことですawk。変数の最初の行の最初の単語を取得し、その後の行の場合は、その変数を使用して最初の単語と一致し、その行のみを印刷します。

awk 'NR == 1 { fw = $1 } $1 == fw' sort.txt

この構成はNR == 1入力ファイルの最初の行のみを取得し、各行に定義されている特殊区切り文字(スペースで区切られていません)はありません。最初のフィールドはからアクセスして$1保存しますfw。以降の条件は$1 == fw各行を評価し、条件が満たされた場合にのみ返します。 true なので、行が印刷されます。

おすすめ記事