从linux的行尾删除空格

aks*_*g24 33 linux sed

我有文件,其中我想删除行末尾的空格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)

  • 字符类`[:space:]`包含所有空格(包括换行符和回车符) - `[:blank:]`只是水平空格(空格和制表符) - 请参阅https://en.wikipedia.org /维基/ REGULAR_EXPRESSION#Character_classes (2认同)

BaB*_*L86 16

试试这个:

sed -i 's/\s*$//' youfile.txt
Run Code Online (Sandbox Code Playgroud)

  • 对于使用GNU`sed`的OSX,这不适用于我. (3认同)