我有文件,其中我想从行尾的test.txt中删除空格如下(行尾有空格。
ath-miRf10005-akr
ath-miRf10018-akr
ath-miRf10019-akr
ath-miRf10020-akr
ath-miRf10023-akr
ath-miRf10024-akr
我使用了sed 's/$\s//'
,但它无效。
答案 0 :(得分:37)
使用简单的空白*
或[:blank:]*
删除该行末尾的所有可能空格:
sed 's/ *$//' file
使用[:blank:]
类删除空格和标签:
sed 's/[[:blank:]]*$//' file
注意这是POSIX,因此兼容GNU sed和BSD。
对于GNU sed,您可以使用GNU扩展\s*
来匹配空格和制表符,如BaBL86's answer中所述。请参阅Basic Regular Expressions上的POSIX规范。
让我们用一个只包含线条的简单文件来测试它,两个只有空格,最后一个也有标签:
$ cat -vet file
hello $
bye $
ha^I $ # there is a tab here
只删除空格:
$ sed 's/ *$//' file | cat -vet -
hello$
bye$
ha^I$ # tab is still here!
删除空格和标签:
$ sed 's/[[:blank:]]*$//' file | cat -vet -
hello$
bye$
ha$ # tab was removed!
答案 1 :(得分:16)
试试这个:
sed -i 's/\s*$//' youfile.txt
答案 2 :(得分:2)
sed -i 's/[[:blank:]]\{1,\}$//' YourFile
[:blank:]用于空格,主要用于选项卡{1,}以排除替换过程中的“末尾没有空格”(如果行很短且文件很小则没有重大影响)
答案 3 :(得分:1)
如果您的线条与您描绘的线条完全相同(没有前导或嵌入空格),则以下内容应该也可以用作
awk '{$1=$1;print}' file.txt
答案 4 :(得分:0)
这可能适合你(GNU sed):
sed -ri '/\s+$/s///' file
这会在行的末尾查找空格,如果存在则删除它。
答案 5 :(得分:-1)
尝试使用
cat kb.txt | sed -e 's/\s$//g'