1

在我的 Bash shell 脚本中,我想从文件中读取特定的行;它由每个部分分隔:并将每个部分分配给一个变量以供以后处理。

例如,我想阅读在第 2 行找到的单词。文本文件:

abc:01APR91:1:50
Jim:02DEC99:2:3
banana:today:three:0

一旦我“阅读”了第 2 行,我应该能够像这样回显这些值:

echo "$name";
echo "$date";
echo "$number";
echo "$age";

输出将是:

Jim
02DEC99
2
3
4

2 回答 2

6

为了回显文件的单行,我非常喜欢sed

$ IFS=: read name date number age < <(sed -n 2p data)
$ echo $name
Jim
$ echo $date
02DEC99
$ echo $number
2
$ echo $age
3
$

这使用进程替换来获取命令的sed输出read。该sed命令使用该-n选项,因此它不会打印每一行(默认情况下);表示2p“当它是第 2 行时,打印该行”;data只是文件的名称。

于 2013-04-29T06:09:04.037 回答
0

You can use this:

read name date number age <<< $(awk -F: 'NR==2{printf("%s %s %s %s\n", $1, $2, $3, $4)}' inFile)

echo "$name"
echo "$date"
echo "$number"
echo "$age"
于 2013-04-29T05:03:43.187 回答