删除每列的最后一个字符

时间:2014-07-22 10:08:48

标签: bash awk sed

想象我有这样的输出:

$ awk '{print $1,$5}'
    sample. sample1.
    test. test1.

理想的输出应该是:

sample sample1
test test1

所以我想删除每列末尾的.

请注意,这两列是第1列和第5列。

2 个答案:

答案 0 :(得分:3)

如果你正在处理awk中的任何角色和FS=" ",我会选择sed:

sed -e 's/. / /' -e 's/.$//'

这将删除空格或行尾之前的任何最后一个字符。注意.代表任何字符,而不仅仅是点。

测试

$ cat a
h.e. llo i. am here. and there
one two three four five six

$ awk '{print $1, $5}' a | sed -e 's/. / /' -e 's/.$//'
h.e here
on fiv

答案 1 :(得分:2)

你可以这样做:

awk '{gsub(/\./,"");print $1,$5}' file

但是如果您发布输入文件,它可能是水獭,更好的方法。


更准确地说是remove . at the end of each column

awk '{sub(/\.$/,"",$1);sub(/\.$/,"",$5);print $1,$5}' file