我有一个制表符分隔的文本文件,格式如下。
Col1 | Col2 | Col3
123.0 | 534.2 | Blah0 2031/23/12
23.00 | 786.2 | Blah1 2033/01/01
12.40 | 343.0 | Blah2 2031/27/11
我需要删除最后一列空格后的所有字符。所以我的输出将是
Col1 | Col2 | Col3
123.0 | 534.2 | Blah0
23.00 | 786.2 | Blah1
12.40 | 343.0 | Blah2
我应该如何使用Awk
或类似的东西来解决这个问题?
答案 0 :(得分:4)
使用awk:
awk -F '\t' 'BEGIN { OFS = FS } NR != 1 { sub(/ [^ ]*$/, "", $NF) } 1' filename
那是:
BEGIN { OFS = FS } # the output should be separated the same way as
# the input
NR != 1 { # in all lines except the header line:
sub(/ [^ ]*$/, "", $NF) # replace the last space and everything after it
} # in the last field ($NF) with the empty string
# (i.e., remove it)
1 # in all lines: print.
如果最后一个字段中有多个空格,并且您想删除第一个空格后的所有内容,请改用sub(/ .*/, "", $NF)
。在这个问题中,在这样的情况下应该发生什么事情并不完全清楚。