SED / AWK:代替n发生 [英] sed/awk: replace N occurrence

查看:136
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆