如何在行尾添加一行(对于文件中的每一行)

时间:2014-09-26 14:39:39

标签: linux bash awk sed grep

我在这样的表中存储了坐标:

140.7 44.9,140.7 44.7,141.0 44.7,141.1 44.8
...

如何将第一个值140.7 44.9(加一个逗号)复制到行尾,以便这是一个封闭的多边形?

140.7 44.9,140.7 44.7,141.0 44.7,141.1 44.8, 140.7 44.9

这可以在一个命令中实现,还是我必须grep第一部分然后将其附加到其他行?

2 个答案:

答案 0 :(得分:3)

这个awk单行怎么样:

awk -F, -v OFS="," '{print $0,$1}' file
如果您喜欢最后一个逗号后面的whithspace,请

更改为OFS=", "

答案 1 :(得分:1)

使用sed

s='140.7 44.9,140.7 44.7,141.0 44.7,141.1 44.8'
sed -r 's/([^,]+)(.*)/\0,\1/' <<< "$s"
140.7 44.9,140.7 44.7,141.0 44.7,141.1 44.8, 140.7 44.9

使用awk:

awk -F, -v OFS=', ' '{print $0, $1}' <<< "$s"
140.7 44.9,140.7 44.7,141.0 44.7,141.1 44.8, 140.7 44.9