我有一个文件,其中包含三个以四个空格分隔的列
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
我修改了文件并使用制表符和逗号作为分隔符,但我仍然无法打印特定字符串的第二或第三列值。
我做错了什么?
答案 0 :(得分:0)
我试图通过搜索第一列字符串来获取第二列
如果您的列中没有空格,那么您可以使用awk
:
awk -v str="$str" '$1 ~ str { print $2 }' "$file"
awk
自动拆分空格上的字段。
如果列值中有空格,请使用:
awk -F ' {4}' -v str="$str" '$1 ~ str { print $2 }' "$file"
' {4}'
是一个正则表达式,可以将4个空格作为输入字段分隔符。
答案 1 :(得分:0)
如果您遇到问题awk
,请使用sed
sed -nE 's/^1234\s+(\S+).*/\1/p'
在行的开头找到模式并打印下一个非空格字段。如果您的字段包含空格,则此方法不起作用。