从unix中的文件中删除最后一个字符

时间:2015-03-04 15:02:03

标签: unix awk sed

08-01-12|07-30-13|08-09-32|12-43-56|

08-01-12|07-30-13|08-09-32|12-43-56

我想删除最后一个|

2 个答案:

答案 0 :(得分:4)

快速而肮脏

sed 's/.$//' YourFile

有点安全

sed 's/[|]$//' YourFile

允许空间

sed 's/[|][[:space:]]*$//' YourFile

答案 1 :(得分:1)

由于您使用awk标记,因此请在此处找到两种方法,每种方法用于解释您的问题:

  • 如果您想删除|,如果它是最后一个字符:

    awk '{sub(/\|$/,"")}1' file
    

等同于sed s'/|$//' file,只有逃避|,因为它在正则表达式内容(“或”)中具有特殊含义。

  • 如果你想删除最后一个字符,无论它是什么:

    awk '{sub(/.$/,"")}1' file
    

相当于sed s'/.$//' file,因为.匹配任何字符。

测试

$ cat a
08-01-12|07-30-13|08-09-32|12-43-56|
rrr.
$ awk '{sub(/\|$/,"")}1' a
08-01-12|07-30-13|08-09-32|12-43-56
rrr.                                 # . is kept
$ awk '{sub(/.$/,"")}1' a
08-01-12|07-30-13|08-09-32|12-43-56
rrr                                  # . is also removed