如何通过在Ubuntu 16.04上看到的gawk将字符串开始替换为“alg to“dms::alg?

qyzbxkaa  于 2023-11-17  发布在  其他
关注(0)|答案(1)|浏览(115)

正如标题中所说,我想通过awk"alg_hash替换为"dms::alg_hash"alg_sort替换为"dms::alg_sort等,awk实际上使用了Ubuntu16.04中的gawk

注意"alg之间必须加上dms

下面的代码几乎实现了上述目标,但"alg_hash将被dms::"alg_hash而不是"dms::alg_hash所取代。如何使其按预期工作?

awk '{
    sub(/\"alg_hash/, "dms::/&");
  }

  { print }
'

字符串

jqjz2hbq

jqjz2hbq1#

给定此输入:

$ cat file
"alg_sort
"alg_hash

字符串
使用提供扩展函数gensub()的awk,例如GNU awk:

$ awk '{print gensub(/"(alg)/,"\"dms::\\1",1)}' file
"dms::alg_sort
"dms::alg_hash


或者使用awk:

$ awk 'match($0,/"alg/){$0="\"dms::" substr($0,RSTART+1)} 1' file
"dms::alg_sort
"dms::alg_hash


sed通常更简洁,用于单独行上的简单替换,例如使用任何sed:

$ sed 's/"\(alg\)/"dms::\1/' file
"dms::alg_sort
"dms::alg_hash

相关问题