我正在编写一个 shell 脚本,它将文本文件作为输入并生成电子表格作为输出。我有一个类似于下图所示的文本文件。
Name:John
Age:30
Gender:male
Name:Bob
Age:65
Gender:Male
并且这种模式会不断重复多次。我必须创建一个电子表格,其中包含姓名、年龄和性别字段,如下所示。
Name Age Gender
John 30 Male
Bob 65 Male
如有帮助,将不胜感激。
答案1
创建一个制表符分隔的文本文件,准备导入到 Excel 中:
printf "Name\tAge\tGender\n" > outfile
cut -d: -f2- <infile | paste - - - >> outfile
printf
创建制表符分隔的标题cut
从第二个字段到行尾paste
将输出格式化为制表符分隔的三列并修改输出文件
您还可以对命令进行分组并仅重定向一次:
{
printf '%s\t%s\t%s\n' Name Age Gender
cut -d: -f2- <infile | paste - - -
} > outfile
答案2
如果文件的每条记录始终包含三行,则以下内容有效。
echo "Name Age Gender" >>OUTPUT.txt; xargs -n 3 < INPUTFILE.txt |sed 's/Name:\|Age:\|Gender://g' >> OUTPUT.txt
我确信有更雄辩的方法来处理这个问题。