有人知道如何使用 Sed 删除文本文件中的所有空格吗?我一直尝试使用“d”删除命令来执行此操作,但似乎无法弄清楚
答案1
什么样的“空间”?
“删除所有空格”可能有多种含义:
- 删除所有出现的空格字符,代码
0x20
。 - 删除所有水平空格,包括水平制表符“
\t
” - 删除所有空格,包括换行符、“
\n
”和其他
适合这项工作的合适工具
如果sed
由于某些隐藏的原因这不是必需的,那么最好使用合适的工具来完成工作。
该命令tr
的主要用途是将字符列表翻译(因此命名为“tr”)为其他字符列表。在特殊情况下,它可以翻译为空字符列表;选项-d
( --delete
) 将删除列表中出现的字符。
字符列表可以在[:...:]
语法中使用字符类。
tr -d ' ' < input.txt > no-spaces.txt
tr -d '[:blank:]' < input.txt > no-spaces.txt
tr -d '[:space:]' < input.txt > no-spaces.txt
当坚持sed
使用 sed 时,[:...:]
字符类的语法需要与正则表达式中的字符集语法相结合,[...]
从而导致有些令人困惑[[:...:]]
:
sed 's/ //g' input.txt > no-spaces.txt
sed 's/[[:blank:]]//g' input.txt > no-spaces.txt
sed 's/[[:space:]]//g' input.txt > no-spaces.txt
答案2
您可以使用它来删除所有空格file
:
sed -i "s/ //g" file
答案3
也许这样太晚了,但 sed 接受正则表达式作为输入。'\s' 是所有空格的表达式。所以sed s/'\s'//g
应该可以完成工作。干杯