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

Bash 使用shell脚本读取文本文件中特定行中的单词,bash,shell,csv,file-processing,Bash,Shell,Csv,File Processing,在我的bashshell脚本中,我希望从文件中读取特定的行;它由:分隔,并将每个部分分配给一个变量以供以后处理 例如,我想读第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 您可以使用以下选项:

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

例如,我想读第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
您可以使用以下选项:

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"
read name date number age您可以使用:

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"

read name date number age对于回显一行文件,我非常喜欢
sed

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

$IFS=:read name date number age<对于回显一行文件,我非常喜欢
sed

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

$IFS=:读取姓名日期号码年龄<顺便说一句,这种技术的一个优点是,如果姓名是
Jim Kennedy
,而不是
Jim
,则会将正确的值输入
$name
。其他答案会有问题,
Kennedy
是日期,
02DEC99
是数字,
23
是年龄。对您出色的-n 2p sed修饰符感兴趣,但在文档中找不到它。找到了这样的解释:@svante:我在练习干-不要重复你自己的话D我将添加一些注释来解释
sed
命令。顺便说一句,这种技术的一个优点是,如果名称是
Jim Kennedy
,而不仅仅是
Jim
,那么它会将正确的值输入
$name
。其他答案会有问题,
Kennedy
是日期,
02DEC99
是数字,
23
是年龄。对您出色的-n 2p sed修饰符感兴趣,但在文档中找不到它。找到了这样的解释:@svante:我在练习干-不要重复你自己的话D我将添加一些注释来解释
sed
命令。