如何使 bash 脚本接受一个文本文件并在有组织的文件中输出数据?

how to make bash script that takes in one text files and outputs the data in an organised file?

我之前没有做过任何主要的脚本编写,但基本上我正在尝试制作一个脚本,该脚本接收一个名为 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: " }'

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

我还有一些 'features' 我打算添加,但我希望我能够解决这些问题。有人能帮我 and/or 指出正确的方向吗?

至少这是一种方式:

kent$ paste <(echo "Name\nOcuupation\nCountry\nDate of Birth") <(awk -v RS=":" '=' <<<"Steve Wozniak:Engineer:USA:1950")  
Name    Steve Wozniak
Ocuupation      Engineer
Country USA
Date of Birth   1950

awk 也可以做到。例如,-F: -v OFS=":" '{print "Name",;print "Occ..",; print ...}'

这可行:

#!/bin/bash

while IFS=: read name job home dob

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

用法:% scriptname.sh filename

FS是字段分隔符,不是RS。您可以使用 -F 选项将其设置为 awk

awk -F: '{
        print "Name:", ;
        print "Occupation:", ; 
        print "Country:", ; 
        print "Date of Birth:", 
}' input.txt