我想从给定文件中删除所有空格并将结果写入另一个文件。我想为此使用 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
并再次执行