1. ホーム
  2. linux

[解決済み] grepコマンドで特定の列にマッチングさせる

2022-02-17 13:25:43

質問

grepコマンドで特定の列にマッチングさせることができず、困っています。私はこのようなテストファイル(test.txt)を持っています...

Bra001325       835     T       13      c$c$c$c$c$cccccCcc      !!!!!68886676
Bra001325       836     C       8       ,,,,,.,,        68886676
Bra001325       841     A       6       ,$,.,,. BJJJJE
Bra001325       866     C       2       ,.      HJ

そして、これらの行のうち、数字があるものをすべて抽出したいのです。 866 を2列目に表示します。私が grep コマンドを使用すると、その番号を含むすべての行を取得できます。

grep "866" test.txt

Bra001325       835     T       13      c$c$c$c$c$cccccCcc      !!!!!68886676
Bra001325       836     C       8       ,,,,,.,,        68886676
Bra001325       866     C       2       ,.      HJ

grepコマンドで特定のカラムにマッチさせるには?

どのように解決するのですか?

次のようにしてみてください。

$ awk '$2 == 866' test.txt

を追加する必要はありません。 {print} のデフォルトの動作は awk に印刷することです。 true の条件を満たしている。

グレップ :

$ grep -P '^\S+\s+866\b' *

しかし アッキー は、ファイル名を表示することもできます & よりもかなり堅牢です。 グレップ ここで :

$ awk '$2 == 866{print FILENAME":"$0; nextfile}' *