使用shell脚本读取文本文件中特定行中的单词

时间:2013-04-29 03:56:10

标签: bash shell csv file-processing

在我的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

2 个答案:

答案 0 :(得分:5)

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

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

这使用process substitutionsed的输出转换为read命令。 sed命令使用-n选项,因此不会打印每一行(默认情况下); 2p表示'当它是第2行时,打印该行'; data只是文件的名称。

答案 1 :(得分:0)

您可以使用:

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"