Linux 使用awk打印输出格式

Linux 使用awk打印输出格式,linux,awk,Linux,Awk,这是我写的awk脚本: BEGIN{ print "Working" } { awk "$1=$1" FS=";" OFS="\n" questions.txt > aa.txt } 该文件包含如下文本: B-001-002-002;An Amateur Radio Operator Certificate is valid >for:;life;five years;three years;one year 使用FS和OFS,我可以将其拆分为单独的行。代码在cli中工作

这是我写的awk脚本:

BEGIN{ print "Working" }
{
    awk "$1=$1" FS=";" OFS="\n" questions.txt > aa.txt
}
该文件包含如下文本:

B-001-002-002;An Amateur Radio Operator Certificate is valid >for:;life;five years;three years;one year
使用FS和OFS,我可以将其拆分为单独的行。代码在cli中工作,但我希望将其写入脚本并能够运行它

我的代码是:

awk '$1=$1' FS=";" OFS="\n" filename
这可以在cli中使用,但我不确定如何在脚本中使用它

期望输出:

  • B-001-002-002
  • 业余无线电操作员证书适用于:

    a) 生活

    b) 五年

    c) 三年

    d) 一年


    谢谢

    您需要的不仅仅是更改分隔符

    $ awk -F';' 'BEGIN{split("x;x;a;b;c;d;e",c)} 
                      {print NR". " $1; print $2; 
                       for(i=3;i<=NF;i++) print c[i] ") " $i}' file
    
    1. B-001-002-002
    An Amateur Radio Operator Certificate is valid for:
    a) life
    b) five years
    c) three years
    d) one year
    
    $awk-F';“”开始{split(“x;x;a;b;c;d;e”,c)}
    {打印编号“.”$1;打印编号$2;
    
    对于(i=3;i您是否尝试过将这些精确的行复制到文件中?因为它可以工作。我应该在BEGIN块中使用它,还是仅在单独的块中使用它?我尝试过这样做。当我复制相同的代码并运行它时,它会出现语法错误:syntax error at或near=您的命令对我的工作方式相同,无论它是在脚本中还是在命令行上。我复制了
    awk'$1=$1'FS=“;”OFS=“\n”文件名
    ,将其放入名为
    scr
    的文件中,运行
    chmod+x scr
    ,然后运行
    /scr
    ,并从分号分隔的文件中获得作为单独行的输出。你到底为什么要将脚本作为图像而不是文本发布,我们可以执行以测试它???不管怎样-你试图从内部调用awkawk,我怀疑你们不理解awk和shell之间的区别。请阅读Arnold Robbins的《有效的awk编程,第四版》一书的第一章来解决这个问题,然后在尝试更多的awk编程之前阅读它的其余部分,谢谢你们的回复。这是我第一次在stackoverflow。我什么都不知道工作