我想在 column 命令中的特定列上应用 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"
这里我只想 grep 第二列中的模式 ST。这个怎么做 ?
预期结果:
3 ST ST01 3 3 856
3 ST ST02 4 9 0234
答案1
如果不做一些花哨的正则表达式来计算逗号,那么最好使用它awk
来解决这个问题。
awk -F, '$2=="ST"'
- 该
-F,
参数指定分隔符,该分隔符设置为数据的逗号。 $2
指第二列,这是您要匹配的内容。"ST"
是你想要匹配的值。
答案2
进入ST
第 2 列(此处-E
可以{1}
省略):
grep -E '^([^,]*,){1}ST[^,]*' file
输出:
3 ST ST01 3 3 856 3 ST ST02 4 9 0234
进入ST
第6栏:
grep -E '^([^,]*,){5}ST[^,]*' file | column -s, -t
输出:
6 N1 N101 2 3 ST
答案3
通过使用awk
我们可以选择所需的列,
column -s, -t < myfile.txt | awk '$2 == "ST"'
如果使用 shell 变量,
seg="ST"
column -s, -t < $ST_FILE | awk -v var="$seg" '($2 == var)'