如何从输入文件中删除空格?

如何从输入文件中删除空格?

输入文件示例:

abcd
<Space>
1234
<Space>

期望的输出:

abcd
1234

答案1

通过它

sed '/^[[:blank:]]*$/d'

sed命令删除所有空行或仅包含空格和/或制表符的行。正则表达式^[[:blank:]]*$匹配空行,尾随dsed删除它们的编辑命令。

例如:

sed '/^[[:blank:]]*$/d' <file >newfile

该文件newfile将是file删除了空行的编辑变体。

或者,仅输出包含非空白字符的行:

sed -n '/[^[:blank:]]/p' <file >newfile

这将打印至少包含一个非空格或制表符的每一行。其余行将被忽略。选项-n禁用sed每行的默认输出,尾部psed输出当前行的命令(如果它与前面的正则表达式匹配)。

答案2

如果您想删除仅包含空格的行以及空行:

grep '[^ ]'   # ie, match any lines with at least 1 char different from space

或者 :

grep -v '^ *$' # ie, hide lines that only contain spaces (0 or n spaces, ie empty lines as well)

如果您还想删除空行或仅包含“制表符或空格”的行

grep -v "^[ $(printf '\t')]*$"

答案3

基于强制awk的解决方案:

awk 'NF' input.txt

这只会打印awk检测到至少一个“字段”的行(即字段计数器NF非零)。请注意,这也会删除空行,因为它们只包含空格。

相关内容