我是shell脚本的新手,我需要从包含2d数组的文件中读取。假设有一个名为 test 的文件.dat其中包含的值为:
- Paris London Lisbon
- Manchester Nurnberg Istanbul
- Stockholm Kopenhag Berlin
在 linux bash 脚本中从此表中选择元素的最简单方法是什么?例如,用户输入 -r 2 -c 2 测试.dat这意味着在行 [2] 和列 [2] (纽伦堡)中选择元素。
我已经看过读取命令并在谷歌上搜索过,但大多数示例都是关于 1d 数组的。
这个看起来很熟悉,但无法完全理解。
awk
非常适合:
$ awk 'NR==row{print $col}' row=2 col=2 file
Nurnberg
-
NR==row{}
的意思是:在记录数row
上,做{}
记录数通常是行数。 -
{print $col}
的意思是:打印字段编号col
。 -
row=2 col=2
将这两个参数都提供给awk
。
更新
还有一个小问题:我怎样才能把它转换成一个sh文件,所以 当我输入 -r 2 -c 2 测试时.dat进入提示符,我可以运行 脚本,以便它从文件中读取并回显输出?– iso_9001_。
例如:
#!/bin/bash
file=$1
row=$2
col=$3
awk 'NR==row{print $col}' row=$row col=$col $file
然后你像这样执行:
./script a 3 2
Kopenhag