我是shell脚本的新手,我需要的是从包含2d数组的文件中读取。假设有一个名为test.dat的文件,其中包含以下值:
- Paris London Lisbon
- Manchester Nurnberg Istanbul
- Stockholm Kopenhag Berlin
在linux bash脚本中从这个表中选择元素的最简单方法是什么?例如,用户输入-r 2 -c 2 test.dat,意味着选择第[2]行和第[2]行(纽伦堡)的元素。
我已经看过read命令和googled,但大多数示例都是关于1d数组的。
This一个人看起来很熟悉,但却无法理解。
答案 0 :(得分:1)
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 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