如何在列上使用 grep?

如何在列上使用 grep?

我想在 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)'

相关内容