簡體   English   中英

如何正確使用SED更改文件中的行?

[英]How to change a line in a file using SED properly?

我試圖在OS X中使用bash的SED命令,但失敗了。

我需要將此行#"phpunit/phpunit:3.7.*",更改為同一行,但不包含# (因此在我的文件"phpunit/phpunit:3.7.*",

在sed中執行此操作的最佳方法是什么?

我試過了: sed -i -e "s/#\\"phpunit/phpunit:3.7.*\\",/\\"phpunit/phpunit:3.7.*\\"," file.txt

但這沒有用:(

我可以看到一個明顯的錯誤,即您在正則表達式部分中使用了替換分隔符(斜杠)。 您必須將其轉義,例如:

sed -e "s/#\"phpunit\/phpunit:3.7.*\",/\"phpunit\/phpunit:3.7.*\",/" file.txt

可以將您想保留的內容歸為一組,例如:

sed -e "s/#\(\"phpunit\/phpunit:3.7.*\",\)/\1/" file.txt

兩種解決方案都可以:

"phpunit/phpunit:3.7.*",

我不使用OS X ,所以省略了-i開關。 linux-i后面有一個空格是足夠的,但是在您的系統中,我認為您必須提供一個空白字符串,例如: -i''但不確定,因此請測試這一部分。

為什么不只使用類似

sed 's/#//' file.txt

如果您需要更多的特異性,

sed 's/#"php/"php/' file.txt
$ cat input
#"phpunit/phpunit:3.7.*",

由於特殊字符* ,,稍后會出現嚴重的反斜杠. /

$ sed  's/#"phpunit\/phpunit:3\.7\.\*",/"phpunit\/phpunit:3\.7\.\*",/' input
"phpunit/phpunit:3.7.*",

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM