繁体   English   中英

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

[英]Loop through multiline string using awk scripting language

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

例如:

文件awktest

#!/bin/awk -f

BEGIN {

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

    while ( LINES ) {
        print line;
    }

    exit 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") - 通过分隔符\\n将字符串LINES拆分为块数组 ( a )。
    n是块的数量

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

您可以将 FS 设置为\\n并像这样迭代每个字段:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM