的子我有以下內容的文本文件(「file.txt的」):sed的(或AWK)的正則表達式來替代匹配
# disutil_screening = 0.00000; # favorable
disutil_screening = 0.00009; # base
# disutil_screening = 0.00019; # unfavorable
我需要切換這些3行(或者「有利」,「基礎」或「不利」)使用GNU Sed進行註釋。
我知道我可以匹配代碼的「有利」行如下面(其中,作爲僞例如,我簡單地用「AAA」替換文本):
$ cat file.txt | sed -r 's/#[\t]disutil_screening[\ =0-9\.;]+# favorable/aaa/'
aaa
disutil_screening = 0.00009; # base
# disutil_screening = 0.00019; # unfavorable
然而,這個例子Sed聲明顯然與我實際想要的很遠。我需要一個Sed表達式,它只會刪除前導的「#」。也就是說,我需要一個sed表達式($EXPR
),使得如上圖所示下列方式被修改文件「file.txt」的內容:
$ cat file.txt | sed -r $EXPR
disutil_screening = 0.00000; # favorable
disutil_screening = 0.00009; # base
# disutil_screening = 0.00019; # unfavorable
一旦我知道如何做到這一點(更換龍頭「 #「與」「爲」有利「線),那麼我相信我可以弄清楚如何將」#「添加到」基本「行(即註釋掉當前未被註釋掉的行)。
注意:我可以使用awk來完成這個任務而不是sed,但是我有點被awk嚇倒了,從來沒有用過它。
供參考:其實,有許多不同的'disutil_ *'在文本文件中的語句。但爲了這個問題的目的,我只是假設唯一一個是'disutil_screening'。實際上有'disutil_biopsy','disutil_surgery'等。因爲有很多disutil的,我需要使這個自動切換註釋行。 – synaptik