如何使用awk / sed从字符串替换为多个模式?

时间:2016-01-25 09:53:44

标签: awk sed xargs

我有一个patternfile.txt。

1 FPAT = "pata"
2 FPAT = "patb"
3 FPAT = "patc"

和awkfile.txt。

BEGIN { FPAT }
{
    for(i=1; i<=NF; i++){
       print("%s\n", $i)}
 }

我想在替换字符串之后制作多个文件&#39; FPAT&#39;每个模式pata,patb,patc逐个像这样。

  1. awkfile1.txt:

    BEGIN { FPAT = "pata" }
    {
       for(i=1; i<=NF; i++){
           print("%s\n", $i)}
    }
    
  2. awkfile2.txt:

    BEGIN { FPAT = "patb" }
    {
        for(i=1; i<=NF; i++){
            print("%s\n", $i)}
     }
    
  3. awkfile3.txt:

    BEGIN { FPAT = "patc" }
    {
         for(i=1; i<=NF; i++){
             print("%s\n", $i)}
    }
    

    请帮帮我。

1 个答案:

答案 0 :(得分:2)

我感觉这有点像XY problem,但我认为你可以在awk的一次调用中获得你想要的输出:

awk '{ print "BEGIN { " substr($0, index($0, $2)) " }" > ("awkfile" $1 ".txt") }' patternfile.txt

这只是读取输入文件的每一行,并将您感兴趣的部分(从第二个字段到行尾)写入输出文件。它使用输入的第一个字段来确定输出文件名。