【发布时间】:2011-09-05 22:03:03
【问题描述】:
我有一个如下结构的数据集:
1234 4334 8677 3753 3453 4554
4564 4834 3244 3656 2644 0474
...
我想: 1) 搜索特定值,例如 4834 2)返回以下字段(3244)
我对 awk 很陌生,但意识到这是一个简单的操作。我创建了一个 bash 脚本,它要求用户输入,并尝试返回以下字段。 但我似乎无法绕过 AWK 的范围。如何将输入值解析为 awk?
#!/bin/bash
read input
cat data.txt | awk '
for (i=1;i<=NF;i++) {
if ($i==input) {
print $(i+1)
}
}
}'
提前干杯和感谢!
2011 年 9 月 8 日更新
感谢所有回复。
1) 永远不会选择行的最后一个数字 - 仍然感谢您指出这一点。
2) 我对 awk 有一个更普遍的问题。通常我想用找到的结果“做点什么”。在这种情况下,我想将它输出到 xclip - 从标准输入读取并将其复制到剪贴板的应用程序。例如: $回声嗨|剪辑
不幸的是,awk 不存在回显,所以我需要返回值并回显它。你会怎么做呢?
【问题讨论】:
-
两个'{';三 '}';不是幸福的秘诀。另外,如果要查找的值是 4554,该怎么办?
标签: bash function awk arguments