我有一个文件,我想从行末删除空格。 test.txt的内容如下(行末有空格)。
ath-miRf10005-akr
ath-miRf10018-akr
ath-miRf10019-akr
ath-miRf10020-akr
ath-miRf10023-akr
ath-miRf10024-akr
我使用了sed 's/$\s//'
,但它没有起作用。
使用简单的空白*
或[:blank:]*
来移除行尾可能存在的所有空格:
sed 's/ *$//' file
使用[:blank:]
类可以删除空格和制表符:
sed 's/[[:blank:]]*$//' file
请注意,这是POSIX标准,因此在GNU sed和BSD中均兼容。\s*
来匹配空格和制表符,如BaBL86的答案所述。请参阅关于基本正则表达式的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!
\t
和类似的空格字符有效吗?使用[:space:]
呢? - user1019830[[:space:]]
来实现。 - fedorqui[:space:]
包含所有的空白字符(包括换行和回车符)--[:blank:]
只包括水平空白字符(空格和制表符)--请参阅 https://en.wikipedia.org/wiki/Regular_expression#Character_classes - glenn jackmansed 's/[[:blank:]]*$//' file > file
来更新文件?@fedorqui - alper[\n\r]
,使用[:blank:]
的sed
命令并不能保证成功。然而,通过确保文件和终端使用相同的字符集编码,您可以使用**[:space:]
**将行尾转换为所需格式,并删除空格。 - not2qubit试试这个:
sed -i 's/\s*$//' youfile.txt
在 macOS 上:
sed -i '' 's/\s*$//' youfile.txt
sed
对我无效。 - stiemannkj1s
。 - Jeffreyawk '{$1=$1;print}' file.txt
awk '{$1=$1}1' file.txt
。 - Jotnesed -i 's/[[:blank:]]\{1,\}$//' YourFile
[:blank:]是用于空格、制表符等,{1,}则是为了在替换过程中排除掉结尾处没有空格的情况(如果行比较短且文件比较小,则影响不大)。
sed -ri '/\s+$/s///' file
这个函数查找行末的空格,如果存在则将其删除。
尝试使用
cat kb.txt | sed -e 's/\s$//g'
sed 's/\s*$//'
。$
表示行尾锚点,因此每行后面都没有任何内容。 - user1019830