15

我如何使用 bash 删除每行文件中的空格,例如 file1.txt。前:

  gg g
 gg g
t  ttt

后:

gg g
gg g
t  ttt
4

5 回答 5

29

sed -i 's/ //g' your_file会做到这一点,就地修改文件。

要仅删除一行开头的空格,请使用sed -i 's/^ *//' your_file

在第一个表达式中,我们将所有空格都替换为空。在第二个中,我们在开头使用^关键字替换

于 2012-02-16T10:55:12.357 回答
16

tr(删除所有空格):

$ tr -d ' ' <input.txt >output.txt
$ mv output.txt input.txt

sed(删除前导空格)

$ sed -i 's/^ *//' input.txt
于 2012-02-16T10:49:34.233 回答
4

使用可以使用 perl -i 进行就地替换。

perl -p -e 's/^ *//' file 
于 2012-02-16T11:26:10.080 回答
1

如果模式匹配,则删除行首之前的空格。使用以下命令。例如你的 foo.in 有这样的模式

      This is a test                                
                    Lolll
                       blaahhh
      This is a testtt

发出以下命令后

sed -e '/This/s/ *//' < foo.in > foo.out

foo.out 将是

This is a test
             Lolll
                blaahhh
This is a testtt
于 2015-08-14T18:34:29.293 回答
1

空白”可以包括空格制表符。迄今为止提出的解决方案只能在空间上匹配和成功运行;如果空格采用制表符的形式,它们将失败。

以下已在 OP 的样本数据集上进行了测试,其中包含空格和制表符,成功匹配并在两者上运行:

sed 's/^[[:blank:]]*//g' yourFile

测试后,提供-i开关以sed使更改持久-

于 2020-06-07T09:36:38.737 回答