我在文件中使用sed命令進行替換。 假設我的文件1是:替代選項:在sed命令中
10
11
10
11
然後我想替換一號「10」,在文件1至「12」,並轉儲到file2。該文件2應該是:
12
11
10
11
我試過這個命令:
sed 's/10/12/' file1 >file2
但它改變了第二屆 「10」 也。那麼,我如何編寫sed命令來做到這一點?
我在文件中使用sed命令進行替換。 假設我的文件1是:替代選項:在sed命令中
10
11
10
11
然後我想替換一號「10」,在文件1至「12」,並轉儲到file2。該文件2應該是:
12
11
10
11
我試過這個命令:
sed 's/10/12/' file1 >file2
但它改變了第二屆 「10」 也。那麼,我如何編寫sed命令來做到這一點?
如果你可以用awk,而不是sed的,你可以有更多的控制是這樣的:
awk '!changed && /10/ { sub(/10/, "12"); changed = 1}1' file1
12
11
10
11
嘗試:
sed '0,/10/s/10/12/' file1 >file2
像格里芬說,你可以做這樣的事情:
sed '0,/10/ s/10/12/' file1 > file2
0,/10/
開始設置下列替換命令的邊界。它表示從第0行(第一行)開始,直到它匹配模式/10/
。所以在第一場比賽之後,sed
將停止處理該替換。
'0,/ ... /'只是GNU sed – Scrutinizer
如果你沒有GNU sed
,嘗試:
echo | cat - file | sed '1,/10/s/10/12/; 1d'
或
sed '1,/10/s/10/12/; 1d' << EOF
$(cat file)
EOF
或bash
/ksh93
sed '1,/10/s/10/12/; 1d' <(echo; cat file)
GNU SED知道0,/10/
所以多餘的空行不需要
這將完成這項工作,但你應該解釋它做了什麼以及爲什麼它完成了工作。 –