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