Text-Processing
僅在第一個匹配行上替換為 sed
使用 BSD sed(無 GNU 擴展),我如何執行類似於下面提供的範例的操作,但不是行號,而是在出現模式的第一行執行替換(而不是必須指定實際數量)?
限制為行號
最簡單的限制是行號。
如果要刪除第 3 行的第一個數字,只需在命令前添加“3”即可:
sed '3 s/[0-9][0-9]*//' <filename >newfilename
這完美地工作:
sed '1,/abc/s/abc/xyz/' file.txt
可以簡寫為:
sed '1,/abc/s//xyz/' file.txt
兼容 GNU 和 BSD:
sed '1,/[0-9][0-9]*/s///' <文件名>新文件名
{ sed -Ee'/[0-9]+/{s///;q;}'; cat; } <in >out
^ 應該與 BSD 一起工作
sed
。但顯然不是。所以:
sed -e'/[0-9][0-9]*/{s///;:b' -e'n;bb' -e\} <in >out
…應該與他們中的任何一個一起工作。