linux - 使用 awk 脚本语言循环遍历多行字符串

标签 linux bash awk

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

例如:

文件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") - 分割字符串LINES通过分隔符 a 进入 block 数组 ( \n ) .
    n是 block 的数量

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

关于linux - 使用 awk 脚本语言循环遍历多行字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46586363/

相关文章:

Bash:如何在算术表达式中进行变量扩展?

perl - 将 2 行合并为 1

linux - 无法使用 apktool kali linux 重建 apk

node.js - 仅当文件内容与新数据不同时写入文件

linux - BASH 文件空间

bash - 如何在 Bash 中检查文件是否可执行

shell - 来自数组的输入,供 awk 查找重复项

bash - 使用 FS 时如何抑制 awk 输出?

linux - vsftp虚拟用户设置配置

linux - 使用 Linux mv/rename 重命名脚本