linux - awk脚本中的命令行输入?

标签 linux shell awk

我有一个通过日志文件解析的 awk 脚本 脚本:

BEGIN{
    print "ID", "vFiler", "Type", "host"
}
/=====/{
    vFiler=$2
    next
}
match($0,/root=[^,]*/){
    n=split(substr($0,RSTART+5,RLENGTH-5),N,/:/)
    for(i=1; i<=n; i++)print vFiler,$1,N[i];
}

现在我的问题是,正如您所看到的,在开始时设置了一个 ID,这应该意味着每次在脚本运行之前输入,因为文件每次都有不同的 ID。所以我想知道我应该怎么做,是否编写一个执行此操作并执行 awk 脚本的 shell 脚本。或者有没有办法在 awk 脚本中写这个(也许用 getLine?!)?

我想要实现的输出是:

ID,vFiler,Type,host
1,vfiler0,/vol/vol0,fapra8.net
4,vfiler1,/vol/lnxpjmmorena,fcvapd10.net
4,vfiler1,/vol/CSArchive,fcvapd11.net

(在第二种情况下,ID 保持不变,因为服务器列在同一类型上)

执行脚本后,它应该说“输入 ID”之类的内容。

如果这不能在 awk 脚本中完成,请不要努力编写 shell 脚本(一般来说,我只想知道我该怎么做,但我很感激每一个答案)

提前致谢

最佳答案

我认为您的想法是正确的:

writing a shell script who does this and executes the awk script

有上百万种方法可以做到这一点,但我会编写一个 bash 脚本来调用您的 awk 脚本。

在那里处理任何用户交互和文件系统操作。

您还可以使用此处的文档从 bash 程序中生成 awk 文件。我将在今天晚些时候向您展示。

Linux的一大优势就是“小程序牵手”。 Windows 最大的弱点是单一程序包罗万象的概念。

关于linux - awk脚本中的命令行输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26606421/

相关文章:

css - 如何在服务器端自动将LESS编译成CSS?

python - 最小化到托盘,陷入循环,python gtk

交互式代码中的pythonrc

linux - 用于制作数据库备份的 Shell 脚本只能在提示符下运行

C - 从 UDP 套接字缓冲区读取字节 (Linux)

linux - eval/bash -c 与仅评估变量相比有什么意义?

linux - awk/sed : find string and return its previous index

awk - 删除多行 - 从 "patternA"匹配,到第二次出现 "patternB"

ubuntu - AWK If Condition 未按预期运行

linux - 使用 nix-shell 或 nix shell 在 Linux 64 上运行 MacOS sed