如何制作bash脚本,该脚本接收一个文本文件并在有组织的文件中输出数据?

时间:2015-01-30 00:10:42

标签: bash shell scripting

之前我还没有完成任何主要的脚本,但基本上我正在尝试创建一个脚本,该脚本接收一个名为people.txt的文件,其中的数据如下所示:

Steve Wozniak:Engineer:USA:1950

制作一个新文件,其数据组织如下:

Name: Steve Wozniak
Occupation: Engineer
Country: USA
Date of Birth: 1950

我试过这个尝试:

cat people.txt | awk -v RS=":" '{print "Name: " $1}'

这为我提供了标题为name的每个字段的列表。如何将其分开?

我还有更多功能'我打算加入,但我希望我能够解决这些问题。是否有人能够帮助我和/或指出我正确的方向?

3 个答案:

答案 0 :(得分:1)

FS是字段分隔符,而不是RS。您可以使用-F

awk选项进行设置
awk -F: '{
        print "Name:", $1;
        print "Occupation:", $2; 
        print "Country:", $3; 
        print "Date of Birth:", $4
}' input.txt

答案 1 :(得分:0)

至少这是一种方式:

kent$ paste <(echo "Name\nOcuupation\nCountry\nDate of Birth") <(awk -v RS=":" '$1=$1' <<<"Steve Wozniak:Engineer:USA:1950")  
Name    Steve Wozniak
Ocuupation      Engineer
Country USA
Date of Birth   1950
单凭awk也可以做到。例如,-F: -v OFS=":" '{print "Name",$1;print "Occ..",$2; print ...}'

答案 2 :(得分:0)

这样可行:

#!/bin/bash

while IFS=: read name job home dob

do
        echo -e "Name: $name \nOccupation: $job \nCountry: $home \nDate of Birth: $dob"
        echo " "
done < "$1"

用法:% scriptname.sh filename