簡體   English   中英

連續執行許多sed命令

[英]Execute many sed commands in a row

終端新手在這里。 我有一個帶有許多不同字符串的長文本文件。 我需要將它們全部更改為短代碼,如下所示:

string 1應該更改為ABC
string 2應該更改為LMN
string 3應該更改為XYZ

等等。 我知道如何使用基本的sed命令一次更改其中之一。 我知道我可以將一個sed命令傳遞給另一個。 但是,我大約需要更改1000個字符串。 當然有比1000個管道更好的方法了嗎?

謝謝!

一種方法是對sed使用多個s命令:

sed -e 's|string 1|ABC|' -e 's|string 2|LMN|' -e 's|string 3|XYZ|' your_file

或用分號分隔:

sed -e 's|string 1|ABC|; s|string 2|LMN|; s|string 3|XYZ|' your_file

盡管大多數人只將sed用於“單線”,但sed是一種(有限目的)腳本語言,可用於更復雜的東西。 這樣,它使您可以將sed命令作為文件的輸入。 您要執行的操作是使用每行一個sed命令創建一個文件,如下所示:

s/string 1/ABC/g
s/string 2/LMN/g
s/string 3/XYZ/g

然后將其保存到文件中,說“ shortCodes.sed”

然后,在命令行上,您說

sed -f shortCodes.sed <輸入文件>輸出文件

注意:模式匹配末尾的/g指定一個'global'替換:因此,如果同一字符串在一行中出現多次,則每次都會替換它-您可能會或可能不希望這樣做,具體取決於你的申請。

暫無
暫無

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

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