从 unix 中的文件中删除最后一个字符
Remove last character from a file in unix
有
08-01-12|07-30-13|08-09-32|12-43-56|
想要
08-01-12|07-30-13|08-09-32|12-43-56
我只想删除最后一个 |
。
快速而肮脏
sed 's/.$//' YourFile
有点安全
sed 's/[|]$//' YourFile
允许space
sed 's/[|][[:space:]]*$//' YourFile
仅最后一行的最后一个字符相同(感谢@amelie 的评论):
在前面添加一个 $
所以快速而肮脏它给出 sed '$ s/.$//' YourFile
由于您用 awk
标记,在这里找到两种方法,一种用于对您的问题的每种解释:
如果要删除|
如果是最后一个字符:
awk '{sub(/\|$/,"")}1' file
等同于sed s'/|$//' file
,只是转义|
因为它在正则表达式内容中有特殊含义("or")。
如果要删除最后一个字符,不管它是什么:
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
有
08-01-12|07-30-13|08-09-32|12-43-56|
想要
08-01-12|07-30-13|08-09-32|12-43-56
我只想删除最后一个 |
。
快速而肮脏
sed 's/.$//' YourFile
有点安全
sed 's/[|]$//' YourFile
允许space
sed 's/[|][[:space:]]*$//' YourFile
仅最后一行的最后一个字符相同(感谢@amelie 的评论):
在前面添加一个 $
所以快速而肮脏它给出 sed '$ s/.$//' YourFile
由于您用 awk
标记,在这里找到两种方法,一种用于对您的问题的每种解释:
如果要删除
|
如果是最后一个字符:awk '{sub(/\|$/,"")}1' file
等同于sed s'/|$//' file
,只是转义|
因为它在正则表达式内容中有特殊含义("or")。
如果要删除最后一个字符,不管它是什么:
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