簡體   English   中英

用awk中的其他字符替換字符字符串的子字符串

[英]Replace substring of a string of characters with other characters in awk

我有一個包含很長字符字符串的文件,我想用Ns替換它的子字符串。 例:

測試ABCDABCDABCD

我想用awk命令將所有字母N替換為它的子字符串,然后sed將所有字符從索引5改為8,所以字母N的總長度為4。

產量

ABCDNNNNABCD

我嘗試過這樣的事情:

awk '{ v=substr($0,5,4); sed -i "s/$v/N/g";print substr($0,1,4)""v""substr($0,9,12)}' test

但是,此命令似乎提供以下輸出:

ABCDABCDABC

沒有替代

我想在代碼中包含從哪里開始替換的索引號(例如,這里是4)和替換的長度號(這里也是4),所以我可以在情況下,我想從另一個位置開始,並使用不同的替換長度,因為實際上,我有一個包含數千個字母的字符串,並且我想替換數百個字符,因此模式替換在我的情況下不起作用

您要使用awksed嗎? 似乎您實際上想要以下之一:

$ echo ABCDABCDABCD | perl -pe 'substr($_,4,4)="NNNN"'
ABCDNNNNABCD
$ echo ABCDABCDABCD | perl -pe 'substr($_,4,4)="N"x4'
ABCDNNNNABCD
echo ABCDABCDABCD | awk '{$0=gensub(/ABCD/,"NNNN",2)}1'
ABCDNNNNABCD
$ echo 'ABCDABCDABCD' |
    awk -v b=5 -v e=8 '{
        t=substr($0,b,e-b+1); gsub(/./,"N",t); print substr($0,1,b-1) t substr($0,e+1)
    }'
ABCDNNNNABCD

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM