如果存在匹配模式,如何在2,3,4和第5列中查找和替换字符串

时间:2018-05-03 15:35:49

标签: bash awk

我的文本文件由5列组成。根据用户输入,只想在第2,第3,第4和第5列中搜索并替换它。

例如

oldstring="Old_word" 
newstring="New_word"

所以想找到oldstring的所有完全匹配并用newstring替换它。 即使匹配,第一列也应该不受影响。

浏览并发现awk会这样做,但我可以在一个特定列中进行更改。

bash脚本

2 个答案:

答案 0 :(得分:1)

<button class="et_pb_button">Continue Browsing</button> 

<script> 
  var url = 'www.test.com/signin'; // you need to know where you want to redirect to before hand
  document.querySelector('.et_pb_button').addEventListener('click', function() {
    if(window.history.length > 2) {
          window.history.go(-2);
      } else {
         window.location.href = url;
      }
  });
</script>
$ cat testfile
a,b,c Old_word,d,e
f,gOld_wordOld_wordOld_words,h,i,j

$ awk -F, -v OFS=, -v oldstring="Old_word" -v newstring="New_Word" '{
    for (i=2; i<=5; i++) { gsub(oldstring,newstring,$i) }
    print
}' testfile

有关的详细信息,请阅读awk info page

答案 1 :(得分:1)

另一种方式,类似于Glenn Jackman的回答是:

$ awk -F, -v OFS=, -v old="Old_word" -v new="New_word" '{
      s=$1; $1=""; gsub(old,new,$0); $1=s
      print }' <file>