【发布时间】:2016-04-13 17:24:25
【问题描述】:
我想在“[]”括号中找到每个数字,并在文本文件中打印它们的所有外观(行号)。
例如我得到这样的文本文件:
texttexttext[1] textetxtetete[2]
[1]textextetetete[3]
texttexttext[2]
texttexttext
text[3]text[1]
输出应该是这样的:
[1] = lines : 1 2 5
[2] = lines : 1 3
[3] = lines : 2 5
这是我到目前为止所做的:
#!/bin/bash
cat $1 | awk -F'[/[/] ]' '{ #[] as file separators
for (i=1;i<=NF;i++) #for every part of line
{
if ($i ~ "[0-9]+") #if its number
{
#save it somehow
}
}}'
脚本找到所需的数字,但现在我想以某种简单的方式保存它,以及它的行号(NR 变量)。我应该尝试使用数组吗?我至少需要二维数组,但它们在 bash 中有点问题。有没有更好的办法?
【问题讨论】:
-
awk不支持真正的多维数组,但gawk支持(尽管有一些问题)。除非您想将多个命令串在一起,否则您需要使用具有健全的多维数组支持的东西。