Columnコマンドの特定の列にgrepを適用したい。
myfile.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
カンマを数える特別なRegExを行わなくても、この問題にはawk
を使用したほうがよいでしょう。
awk -F, '$2=="ST"'
-F,
パラメータは、データのカンマに設定される区切り文字を指定します。$2
は、2番目の列を参照します。これは、照合するものです。"ST"
は、照合する値です。列2でST
を取得します(-E
および{1}
はここでは省略できます):
grep -E '^([^,]*,){1}ST[^,]*' file
出力:
3 ST ST01 3 3 856 3 ST ST02 4 9 0234
列6でST
を取得します。
grep -E '^([^,]*,){5}ST[^,]*' file | column -s, -t
出力:
6 N1 N101 2 3 ST
awk
を使用して、必要な列を選択できます。
column -s, -t < myfile.txt | awk '$2 == "ST"'
シェル変数を使用する場合、
seg="ST"
column -s, -t < $ST_FILE | awk -v var="$seg" '($2 == var)'