它可以改变N(例如第二次出现)在文件使用一个行SED/AWK除了这样的方法?:
line_num=`awk '/WHAT_TO_CHANGE/ {c++; if (c>=2) {c=NR;exit}}END {print c}' INPUT_FILE` && sed "$line_num,$ s/WHAT_TO_CHANGE/REPLACE_TO/g" INPUT_FILE > OUTPUT_FILE
Run Code Online (Sandbox Code Playgroud)
谢谢
要更改行中的第N个出现,您可以使用:
$ echo foo bar foo bar foo bar foo bar | sed 's/foo/FOO/2'
foo bar FOO bar foo bar foo bar
Run Code Online (Sandbox Code Playgroud)
因此,您所要做的就是创建文本的"单行",例如使用 tr
tr '\n' ';'
Run Code Online (Sandbox Code Playgroud)
进行替换,然后再使用将其转换回多线
tr ';' '\n'
Run Code Online (Sandbox Code Playgroud)