Linux 从文件中删除多个空间并修改原始文件
指定用于从文本文件中删除多个空格,并在其位置保留单个空格的命令。额外要求:修改原始文件。Linux 从文件中删除多个空间并修改原始文件,linux,shell,ubuntu,terminal,Linux,Shell,Ubuntu,Terminal,指定用于从文本文件中删除多个空格,并在其位置保留单个空格的命令。额外要求:修改原始文件。 成功地拔出了这3个命令: awk '{$2=$2};1' filename.txt tr -s '[:space:]' < filename.txt > filename.new && mv filename.new filename.txt sed -i 's/\s\+/ /g' filename.txt 输出: I'm just giving spaces 编
成功地拔出了这3个命令:
awk '{$2=$2};1' filename.txt
tr -s '[:space:]' < filename.txt > filename.new && mv filename.new filename.txt
sed -i 's/\s\+/ /g' filename.txt
输出:
I'm just giving spaces
编辑:仍在寻找更多答案如果您想更改原始文件,我会在非标准的
sed-I
(在您的示例中为非便携RE)上使用ed
:
printf "%s\n" '1,$s/[[:space:]]\{2,\}/ /g' w | ed -s filename.txt
或者使用perl
:
perl -pi -e 's/\s{2,}/ /g' filename.txt
{2,}
正则表达式构造(\{2,\}
用于POSIX基本正则表达式,如sed
和ed
use)匹配2个或多个先前标记
这两者都匹配任何空格字符,而不仅仅是空格,因为这就是示例的工作方式。如果目标是只压缩多个空格,而不是空格+制表符,则只为单个空格切换[[:space:]
和\s
(顺便说一句,ed
,sed-i
,perl-i
,或者一个常规编辑器,任何“就地”修改文件的东西都很有可能在引擎盖下使用一个临时文件。他们只是为您处理它,这样您就不必像您的tr
示例那样手动操作。)
perl -pi -e 's/\s{2,}/ /g' filename.txt