Arrays 如何在Linux shell中从文件中的2d数组中选择元素

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

我不熟悉shell脚本,我需要的是从包含2d数组的文件中读取。假设有一个名为test.dat的文件,其中包含以下值:

- 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不存在”。如何参数化该命令?