我有文件,其中我想删除行末尾的空格test.txt如下(行尾有空格.
ath-miRf10005-akr
ath-miRf10018-akr
ath-miRf10019-akr
ath-miRf10020-akr
ath-miRf10023-akr
ath-miRf10024-akr
Run Code Online (Sandbox Code Playgroud)
我用过,sed 's/$\s//'但它没有用.
fed*_*qui 45
使用简单的空白*或[:blank:]*删除行尾的所有可能空格:
sed 's/ *$//' file
Run Code Online (Sandbox Code Playgroud)
使用[:blank:]该类删除空格和制表符:
sed 's/[[:blank:]]*$//' file
Run Code Online (Sandbox Code Playgroud)
注意这是POSIX,因此兼容GNU sed和BSD.
对于GNU sed,您可以使用GNU扩展\s*来匹配空格和制表符,如BaBL86的答案中所述.请参阅基本正则表达式的 POSIX规范.
让我们用一个只包含行的简单文件来测试它,两个只有空格,最后一个也有标签:
$ cat -vet file
hello $
bye $
ha^I $ # there is a tab here
Run Code Online (Sandbox Code Playgroud)
删除空格:
$ sed 's/ *$//' file | cat -vet -
hello$
bye$
ha^I$ # tab is still here!
Run Code Online (Sandbox Code Playgroud)
删除空格和标签:
$ sed 's/[[:blank:]]*$//' file | cat -vet -
hello$
bye$
ha$ # tab was removed!
Run Code Online (Sandbox Code Playgroud)
BaB*_*L86 16
试试这个:
sed -i 's/\s*$//' youfile.txt
Run Code Online (Sandbox Code Playgroud)