使用 AWK 拆分 file1,然后根据 file2 中的行命名新文件

splitting file1 using AWK and then name the new files based on lines from file2

文件 1 有多次 <PhotoField1> 之间的长串数据。

示例:

<PhotoField1>alidkfjaeijwoeij<PhotoField1>akdfjalskdfasd<PhotoField1>

文件 2 包含我想用来标记文件的 ID 列表

示例:

A00565415
A00505050
A54531245

我有一个 AWK 命令来将 <PhotoField1> 之间的每个字符串从 File1 解析到它自己的文件中,但它只用数字标记临时文件:

awk -v RS="<PhotoField1>" '{ print [=12=] > "temp" NR }' File1.xml

我需要用第二个文件中的一行替换 temp* 部分

因此新文件将命名为 A00565415、A00505050、A54531245 等。 - 如果我能在文件末尾添加一个 .txt 就更好了:A54531245.txt

awk 命令非常适合将其分成不同的文件,但我需要能够根据 File2 列表命名它们。

awk 'NR==FNR{fname[NR]=[=10=]".txt";next} {print > fname[FNR]}' File2.list RS="<PhotoField1>" File1.xml

你可以使用这个 awk:

awk -v RS="<PhotoField1>|\n" 'FNR==NR{a[NR]=[=10=]; next} 
      NF{ print [=10=] > a[FNR] ".txt" }' file2 file1