【发布时间】:2016-07-15 20:57:50
【问题描述】:
我想使用 sed 实用程序从文本文件中删除前两个字符。我想这样做(就地)。
我尝试了以下方法,但它不起作用:
$ sed -i 's/.{2}//' C:/Users/User/Desktop/text1.txt
$ sed -i -e 's/.{2}//' C:/Users/User/Desktop/text1.txt
$ sed -i'' 's/.{2}//' C:/Users/User/Desktop/text1.txt
只有在我需要备份时才有效:
sed -i.bak -r 's/.{2}//' C:/Users/User/Desktop/text1.txt
或将其替换到另一个文件中:
$ sed -r 's/.{2}//' C:/Users/User/Desktop/text1.txt > C:/Users/User/Desktop/text2.txt
如果我输入:
$ sed -i''
我明白了:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
[后缀]应该是什么?
注意: 我希望对原始文件进行替换,但我不希望有备份文件。 谢谢
【问题讨论】:
-
如果你指定后缀,它会在编辑之前备份你的文件,并用你提供的字符串作为备份文件名的后缀。
-
如果提供了 SUFFIX,则进行备份。这就是后缀应该是什么的答案? - 如果您提供后缀,
sed -i'SUFFIX'将创建一个带有'SUFFIX'的备份文件 -
根据 sed 实现,
-i''可能具有破坏性,如果它创建一个没有后缀的“备份”文件并将更改写入同一个文件。 -
如果你使用
-i.bak(注意备份后缀必须附加到-i选项与GNUsed; BSDsed有不同的规则),然后给一个文件@987654333 @,它将创建一个文件text1.txt.bak作为备份。 -
@anubhava 我试试看。它不会更改原始文件,它会更改备份文件。我不想备份。
标签: bash sed text-files