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

时间:2014-01-15 10:23:07

标签: arrays linux bash shell

我是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一个人看起来很熟悉,但却无法理解。

1 个答案:

答案 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