gpt4 book ai didi

bash - 如何将大文件拆分为小文件和按列命名的文件

转载 作者:行者123 更新时间:2023-12-03 08:31:20 25 4
gpt4 key购买 nike

这是我的 csv 输入,record.csv

AAAAA_01|2020-12-28
BBBBB_01|2021-05-24
CCCCC_01|2021-05-17
DDDDD_01|2021-05-19
EEEEE_01|2021-05-20
FFFFF_01|2021-05-30
GGGGG_01|2021-05-25
HHHHH_01|2020-12-23

希望我可以将 csv 拆分为下面的 txt 并用第 1 列名称命名(仅前 5 个字符)

AAAAA.txt

Name: AAAAA
Date: 2020-12-28

BBBBB.txt

Name: BBBBB
Date: 2021-05-24

我尝试了下面的脚本,文件名导出为xaa,xab......但不知道如何将其重命名为我想要的名称...

cat record.csv | awk 'BEGIN{FS="|";OFS="|"
}{
print "Name: "substr($1,1,5)
print "Date:" $2

}'| split -l 12

谢谢!


awk -F'|' '                                    
f=substr($1,1,5)".txt"
{
print "Name: "substr($1,1,5) >f
print "Date: "$2 >f
print "Remarks" >f
close(f)
}
' record.csv

最佳答案

不需要catawk,或者通过管道连接到其他东西。 awk 可以为您完成这一切。您可以使用正常的重定向语法并引用文件名来打印到文件。

awk -F'|' '{name=substr($1,1,5); print "Name: "name ORS "Date:" $2 > name".txt"}' abcde.txt

例如

$ ls
abcde.txt

$ cat abcde.txt
AAAAA_01|2020-12-28
BBBBB_01|2021-05-24
CCCCC_01|2021-05-17
DDDDD_01|2021-05-19
EEEEE_01|2021-05-20
FFFFF_01|2021-05-30
GGGGG_01|2021-05-25
HHHHH_01|2020-12-23

$ awk -F'|' '{name=substr($1,1,5); print "Name: "name ORS "Date:" $2 > name".txt"}'
abcde.txt

$ ls
AAAAA.txt abcde.txt BBBBB.txt CCCCC.txt DDDDD.txt
EEEEE.txt FFFFF.txt GGGGG.txt HHHHH.txt

$ cat AAAAA.txt
Name: AAAAA
Date:2020-12-28
$ cat BBBBB.txt
Name: BBBBB
Date:2021-05-24

关于bash - 如何将大文件拆分为小文件和按列命名的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64997648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com