之前我还没有完成任何主要的脚本,但基本上我正在尝试创建一个脚本,该脚本接收一个名为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
的每个字段的列表。如何将其分开?
我还有更多功能'我打算加入,但我希望我能够解决这些问题。是否有人能够帮助我和/或指出我正确的方向?
答案 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