【发布时间】:2020-04-14 03:20:41
【问题描述】:
我正在尝试创建一个 awk 脚本文件,该文件接受一个输入文件并将前三行的第四列信息转换为一行。 例如,如果 input.txt 如下所示:
XX YY val1 1234
XX YY val2 2345
XX YY val3 3456
stuff random garbage junk extrajunk
useless 343059 random3
我想将第 1、2 和 3 行的第四列打印成一行:
1234 2345 3456
我试图通过使用 if/else-if 语句来做到这一点,所以我的文件现在看起来像这样:
#!/usr/bin/awk -f
{
if ($1 == "XX" && $3 == "val1")
{
var1=$4;
}
else if ($1 == "XX" && $3 == "val2")
{
var2=$4;
}
else if ($1 == "XX" && $3 == "val3")
{
var3=$4;
}
}
结束{ 打印 var1,var2,var3
然后我会在一行上打印变量。但是,当我尝试实现这一点时,我收到指向 var2=$4 行中的“=”符号的语法错误。
编辑
已解决,在我的真实文件中,我将变量命名为时髦(但具有描述性)名称,这一切都搞砸了。 - 糟糕。
谢谢
【问题讨论】:
-
欢迎来到 SO,特别感谢您以代码的形式展示您的努力(继续努力)。但是您的问题不清楚,它总是建议在您的问题中添加输入/输出示例,所以请添加相同的内容并让我们知道。
-
如果它们在 awk 代码的主体中,是否就像提醒您需要
{ braces ...}围绕这些语句一样简单?否则你会得到随机的语法错误(随机的与 awk 的版本有关...) -
发布一个最小的完整脚本来演示您的问题。
-
这是我的真实变量名中的一个简单错误!谢谢大家!
标签: awk