我有一个看起来像这样的文件:
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
我希望它看起来像这样(删除缩进):
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
如何做到这一点(可能使用sed
?)?
答案 0 :(得分:99)
sed "s/^[ \t]*//" -i youfile
警告:这将覆盖原始文件。
答案 1 :(得分:24)
对于这个特定的问题,这样的事情会起作用:
$ sed 's/^ *//g' < input.txt > output.txt
它表示用一条线替换所有空格。如果您还想删除标签,请将其更改为:
$ sed 's/^[ \t]+//g' < input.txt > output.txt
/之前的前导“s”表示“替代”。 /是模式的分隔符。前两个之间的数据是要匹配的模式,第二个和第三个之间的数据是要替换它的数据。在这种情况下,你将一无所获。最后一次斜杠之后的“g”表示“全局”,即:在整个文件上而不是仅在它找到的第一个匹配上。
最后,您可以使用< input.txt > output.txt
选项代替-i
,这意味着“就地”编辑文件。这意味着,您无需创建第二个文件来包含结果。如果使用此选项,您将丢失原始文件。
答案 2 :(得分:11)
您可以使用AWK:
$ awk '{$1=$1}1' file
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
$ sed 's|^[[:blank:]]*||g' file
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
while
/ read
循环while read -r line
do
echo $line
done <"file"
答案 3 :(得分:5)
此Perl代码编辑原始文件:
perl -i -ne 's/^\s+//;print' file
下一个在编辑原始文件之前制作备份副本:
perl -i.bak -ne 's/^\s+//;print' file
请注意,Perl从sed(和awk)
中大量借用答案 4 :(得分:0)
你走了:
user@host:~$ sed 's/^[\t ]*//g' < file-in.txt
或者:
user@host:~$ sed 's/^[\t ]*//g' < file-in.txt > file-out.txt
答案 5 :(得分:0)
sed -e 's / ^ [\ t] * //' name_of_file_from_which_you_want_to_remove_space&gt;'name _file_where_you_want_to_store_output'
例如: - sed -e's / ^ [\ t] * //'file1.txt&gt; output.txt的
注意:强>
s /:替换命令〜替换每个地址行上的模式(^ [\ t] *)
^ [\ t] *:搜索模式(^ - 行的开头; [\ t] *匹配一个或多个空格,包括制表符)
//:替换(删除)所有匹配的模式
答案 6 :(得分:0)
FWIW,如果您正在编辑此文件,您可以突出显示所有行并使用取消选项卡按钮。
不确定是否有必须从命令行执行此操作。如果是这样,那么:竖起大拇指:接受答案! =)