Arrays 如何在Linux shell中从文件中的2d数组中选择元素
我不熟悉shell脚本,我需要的是从包含2d数组的文件中读取。假设有一个名为test.dat的文件,其中包含以下值:Arrays 如何在Linux shell中从文件中的2d数组中选择元素,arrays,linux,bash,shell,Arrays,Linux,Bash,Shell,我不熟悉shell脚本,我需要的是从包含2d数组的文件中读取。假设有一个名为test.dat的文件,其中包含以下值: - Paris London Lisbon - Manchester Nurnberg Istanbul - Stockholm Kopenhag Berlin 在LinuxBash脚本中,从该表中选择元素的最简单方法是什么?例如,用户输入-r 2-c 2 test.dat,这意味着选择第[2]行和第[2]列的元素(Nurnberg
- Paris London Lisbon
- Manchester Nurnberg Istanbul
- Stockholm Kopenhag Berlin
在LinuxBash脚本中,从该表中选择元素的最简单方法是什么?例如,用户输入-r 2-c 2 test.dat,这意味着选择第[2]行和第[2]列的元素(Nurnberg)
我看过read命令和google,但大多数示例都是关于1d数组的
一个人看起来很熟悉,但不能完全理解它
awk
非常适合:
$ awk 'NR==row{print $col}' row=2 col=2 file
Nurnberg
表示:在记录编号NR==行{}
上,do行
记录编号通常是行数{}
表示:打印字段号{print$col}
col
为row=2 col=2
提供这两个参数awk
更新
还有一个小问题:如何将其转换为sh文件 当我在提示符中输入-r2-c2 test.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
伟大的我怀疑awt会起作用:)非常感谢您
awk
在这方面非常强大:)很高兴它对您起作用!还有一个小问题:如何将其转换为sh文件,以便在提示符中输入-r2-c2 test.dat
时,运行脚本,使其从文件中读取并回显输出?您的速度非常快,非常有帮助:)非常感谢您,我已经成功地按照您的建议编写了代码。所以,再次感谢你。我现在缺少的是,我可以设法以/tablooku.sh tablom.dat2
的形式运行代码,但是当我尝试将“22”部分参数化为/tablooku.sh tablom.dat-r2-c2
时,我得到的错误消息是“error:-rth row和-cth column不存在”。如何参数化该命令?