awk在特定列周围添加单引号,并与其他列连接

时间:2017-11-20 04:01:32

标签: linux shell unix awk

如何将单引号添加到文件中的特定列,并与同一文件中的其他列连接。

示例:file1.txt包含大约10列,将单引号添加到$ 6列,并使用$ 9列连接。

我尝试过:awk -F '|' '{print $6 ":" $9 }' file1.csv

2 个答案:

答案 0 :(得分:1)

我想你想要这个:

echo "1|2|3|4|5|6|7|8|9" | awk -F'|' '{print "\047" $6 "\047" $9}'
'6'9

或者,使用变量q来保存引号:

echo "1|2|3|4|5|6|7|8|9" | awk -F'|' '{q="\047"; print q $6 q $9}'

或者,如果您更喜欢hex:

echo "1|2|3|4|5|6|7|8|9" | awk -F'|' '{q="\x27"; print q $6 q $9}'

或者,您可以将报价作为变量传递:

echo "1|2|3|4|5|6|7|8|9" | awk -F'|' -v q="'" '{print q $6 q $9}'

或者,稍短:

echo "1|2|3|4|5|6|7|8|9" | awk -F'|' -v q=\' '{print q $6 q $9}'

答案 1 :(得分:0)

您也可以使用sed

echo "..." | sed -E "s/([^\|]*\|){5}([^\|]*)\|([^\|]*\|){2}([^\|]*).*/'\2'\4/"

如果字段9始终是最后一个

echo "..." | sed -E "s/([^\|]*\|){5}([^\|]*)\|([^\|]*\|){2}(.*)/'\2'\4/"