使用bash删除文件各行开头的空白

问题描述 投票:15回答:5

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

  gg g
 gg g
t  ttt

之后:

gg g
gg g
t  ttt
linux bash whitespace removing-whitespace
5个回答
29
投票

sed -i 's/ //g' your_file将执行此操作,就地修改文件。

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

在第一个表达式中,我们将所有空格替换为空。在第二个示例中,我们首先使用^关键字

替换

15
投票

tr(删除所有空格):

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

sed(删除前导空白)

$ sed -i 's/^ *//' input.txt

4
投票

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

perl -p -e 's/^ *//' file 

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

0
投票

Whitespace可以同时包含spacestabs。迄今为止提出的解决方案只能与spaces匹配并成功运行;如果空白采用tab的形式,则它们将失败。

以下内容已在带有两个空格和制表符的OP样本数据集上进行了测试,成功匹配并在两个空格上都进行了操作:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.