如何复制一个文件并删除所有空格(这样新文件就没有空格了)

如何复制一个文件并删除所有空格(这样新文件就没有空格了)

我想从给定文件中删除所有空格并将结果写入另一个文件。我想为此使用 shell 脚本。

答案1

删除所有水平的空白字符(即空格和水平制表符)

tr -d '[:blank:]' < file > newfile

去除全部空格字符(包括换行符和垂直制表符)

tr -d '[:space:]' < file > newfile

请注意,这将使文件失去其 POSIX 强制终止换行符:例如为什么文本文件要以换行符结尾?

答案2

使用 shell 处理文本很慢。你应该使用文本处理实用程序。例如,你可以使用sed

删除所有水平空白:

sed 's/\s//g' file > output

删除所有水平空格和空行或仅包含空格的行:

sed 's/\s//g;/^$/d' file > output

彻底删除所有类型的空格,包括所有换行符

sed ':a;s/\s//g;N;s/\n//;ba' file > output

笔记:

  • s/\s//g将任何水平空格字符替换为空,匹配行上的每个空格字符(g表示行上的所有匹配)
  • ;分隔sed命令
  • /^$/空行
  • d删除模式空间
  • :a标签-从这里执行
  • N将下一行读入模式空间
  • \n模式空间中的换行符
  • ba分支到标签:a并再次执行

相关内容