Scripting
如何覆蓋兩個特定模式之間的文本?
我有多行看起來像這樣:
##1## text ##z## ##2## text ##z## ...etc
基本上,雖然我已經知道如何獲取##digit## 行和第一次出現的##z## 之間的文本,但我不確定如何覆蓋中間的內容(實際文本是)。
我並不是要替換
text
上述範例/文件的每個部分,而只是替換我指定的起始點(例如:##99##)和結束點(##z##)之間的任何部分。我不能/
text
不想用我想要覆蓋它的文本替換部分(例如:sed’s/oldtext/newtext/g’),主要是因為:
- 文本部分可能是所述文件的其他中間部分的一部分,並且專門更改文本,而不是兩個特定行/模式之間的內容。
我如何使用 Unix/本地 linux 工具來做到這一點?(dd、sed 等)
給定一個名為 file.txt 的文件和內容
##1## text ##z## ##2## text asdf more text ##z## ...etc
目前尚不清楚您想要什麼,我認為它如下:
命令
cat file.txt | sed -n '/##2##/!{p;d};p;:cycle n;/##z##/!{H;bcycle};{x;s/.*/my awesome replacement/p;x;p}'
產生輸出:
##1## text ##z## ##2## my awesome replacement ##z## ...etc
那是你要的嗎?