列でgrepを使用する方法は?

列でgrepを使用する方法は?

列コマンドの特定の列にgrepを適用したいと思います。

マイファイル.txt

3,ST,ST01,3,3,856
3,ST,ST02,4,9,0234
6,N1,N101,2,3,ST
6,N1,N102,1,60,Comcast
6,N1,N103,1,2,92

私のコマンド:

column -s, -t < myfile.txt | grep -w "ST"

ここでは、2列目のSTパターンをgrepしたいと思います。どうすればいいですか?

予想される結果:

3       ST            ST01              3            3            856
3       ST            ST02              4            9            0234

答え1

awkカンマを計算するために素晴らしい正規表現を使用せずにこの問題を解決するには、これを使用するのが最善です。

awk -F, '$2=="ST"'
  • この-F,パラメーターは、データのコンマに設定される区切り文字を指定します。
  • $2一致させる2番目の列を表します。
  • "ST"一致させたい値です。

答え2

ST列2を入力してください(ここでは省略-E可能{1})。

grep -E '^([^,]*,){1}ST[^,]*' file

出力:

3 ST ST01 3 3856
3 ST ST02 4 9 0234

ST6列に移動:

grep -E '^([^,]*,){5}ST[^,]*' file | column -s, -t

出力:

6 N1 N101 2 3 ST

答え3

を使用してawk必要な列を選択できます。

column -s, -t < myfile.txt | awk '$2 == "ST"'

シェル変数を使用する場合、

seg="ST"
column -s, -t < $ST_FILE | awk -v var="$seg" '($2 == var)'

関連情報