我想在列命令中的特定列上应用 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
Run Code Online (Sandbox Code Playgroud)
我的命令:
column -s, -t < myfile.txt | grep -w "ST"
Run Code Online (Sandbox Code Playgroud)
在这里,我只想在第二列中 grep 模式 ST。这该怎么做 ?
预期结果:
3 ST ST01 3 3 856
3 ST ST02 4 9 0234
Run Code Online (Sandbox Code Playgroud)
小智 13
不用在计算逗号的地方做一些花哨的 RegEx,最好使用awk
这个问题。
awk -F, '$2=="ST"'
Run Code Online (Sandbox Code Playgroud)
-F,
参数指定分隔符,该分隔符设置为您的数据的逗号。$2
指的是第二列,这是您要匹配的内容。"ST"
是您要匹配的值。获得ST
第2栏(-E
和{1}
可以在这里被省略):
grep -E '^([^,]*,){1}ST[^,]*' file
Run Code Online (Sandbox Code Playgroud)
输出:
3 ST ST01 3 3 856 3 ST ST02 4 9 0234
进入第ST
6 列:
grep -E '^([^,]*,){5}ST[^,]*' file | column -s, -t
Run Code Online (Sandbox Code Playgroud)
输出:
6 N1 N101 2 3 ST