SED / AWK:代替n发生 [英] sed/awk: replace N occurrence
本文介绍了SED / AWK:代替n发生的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
结果有可能改变N(例如第二次出现)的文件是单行的sed / awk的,除了这样的方法?:结果
it's possible to change N (for example second occurrence) in file using one-line sed/awk except such method?:
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
结果
谢谢
Thanks
推荐答案
要更改的第N个occurence在一条线上,你可以使用这样的:
To change the Nth occurence in a line you can use this:
$ echo foo bar foo bar foo bar foo bar | sed 's/foo/FOO/2'
foo bar FOO bar foo bar foo bar
因此,所有你需要做的就是创建你的文字,例如一个单行使用 TR
tr '\n' ';'
做你的替换,然后再次使用转换回多行
do your replacement and then convert it back to a multiline again using
tr ';' '\n'
这篇关于SED / AWK:代替n发生的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文