我有一个通过日志文件解析的 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/