2017-06-01 14 views
0

正常表達改變到server1-bckSED改變第二occurence中的所有線路

sed -i 's/server1/server1-bck/g' file.out 

因此所有將改爲server1-bck。我需要的是改變每一行中表達式的第二次出現。

例如, 文字之前

rename files tsm_node1 //server1/document/users/ //server1/document/users/ 

文本之後期望:

rename files tsm_node1 //server1/document/users/ //server1-bck/document/users/ 

我怎麼能這樣做?

+3

使用GNU sed:'sed -i's/server1 /& - bck/2'file.out' – Cyrus

回答

1
echo "rename files tsm_node1 //server1/document/users/ //server1/document/users/" |\ 
sed 's/server1/server1-bck/2g' 

sed著名的替代是這樣的:
sed 's/regex/replacement/flags'

標誌可以是數字,你的情況2建議sed至2日發生執行這個命令,如果你需要更多的,因此, g標誌是。如果您確定,沒有更多項目需要替換,您可以離開並忘記g標誌。

如果你不用管,有一個文件,這樣做:

sed -i 's/server1/server1-bck/2g' file.out

sed -i 's/server1/&-bck/2g' file.out

此外,如果你想與替代你有什麼發現,將有你可以替換sed&更換您的正則表達式的部分。

+0

非常感謝您的幫助,我會在現有文件上做到這一點 – frodo

+0

@frodo歡迎您。如果您認爲這個答案是對的並且有幫助,請將此答案標記爲正確答案。這將有助於社區找到正確答案。 –