如何在列上使用grep?

raj*_*alx 5 grep columns

我想在列命令中的特定列上应用 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认同)

Cyr*_*rus 5

获得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

进入第ST6 列:

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

输出:

6 N1 N101 2 3 ST