使用awk脚本语言遍历多行字符串

时间:2017-10-05 13:04:57

标签: linux bash awk

我有一个脚本,它读取包含多行的字符串。我需要遍历每一行。

例如:

档案awktest

#!/bin/awk -f

BEGIN {

    LINES = "line1\nline2\nline3\n";

    while ( LINES ) {
        print line;
    }

    exit 1;
}

我已经尝试了一切。这是我的最后一招。谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

使用awk' split功能:

awk 'BEGIN { 
         LINES = "line1\nline2\nline3\n";
         n=split(LINES,a,"\n");
         for (i=1;i<n;i++) print a[i] 
     }'

输出:

line1
line2
line3
  • n=split(LINES,a,"\n") - 通过分隔符LINES将字符串a拆分为数组(\n)。
    n是块数

  • for (i=1;i<n;i++) - 遍历所有子字符串

答案 1 :(得分:0)

您可以将FS设置为\n并迭代每个字段,如下所示:

$ awk 'BEGIN{FS="\\\\n"; OFS="\n";} {for(i=1; i<NF; i++){print $i} }' <<<"$LINES"
line1
line2
line3