无法使用 awk 获取第二列

  • 本文关键字:二列 获取 awk shell awk
  • 更新时间 :
  • 英文 :


>我有一个文件,其中包含由四个空格分隔的三列

1234    567    q
1902    190    r

我正在尝试通过搜索第一列字符串来获取第二列

i=`grep $str $file | awk -F "[    ]" '{print $2 }'`
j=`grep $str $file | awk -F "[    ]" '{print $3 }'` 
echo second_col=$i
echo third_col=$j

我修改了文件并使用制表符和逗号作为分隔符,但仍然无法打印特定字符串的第二列或第三列值。

我做错了什么?

我正在尝试通过搜索第一列字符串来获取第二列

如果您的列中没有空格,则可以为此使用 awk

awk -v str="$str" '$1 ~ str { print $2 }' "$file"

awk会自动拆分空格上的字段。

如果您的列值中有空格,请使用:

awk -F ' {4}' -v str="$str" '$1 ~ str { print $2 }' "$file"

' {4}' 是一个正则表达式,用于将 4 个空格作为输入字段分隔符。

参考:有效的AWK编程

如果您有损坏的awk请尝试使用此解决方案sed

sed -nE 's/^1234s+(S+).*/1/p'

找到行首的图案并打印下一个非空格字段。 如果您的字段包含空格,则此方法将不起作用。

最新更新