>我有一个文件,其中包含由四个空格分隔的三列
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'
找到行首的图案并打印下一个非空格字段。 如果您的字段包含空格,则此方法将不起作用。