awk:打印多个文件,每个文件放入一个新文件夹。从输入文件中提取的文件夹名称

awk: print multiple files, each file into a new folder. Folder name extracted from input file

我正在努力将 mkdir 添加到 awk 行中。

input.txt:

A1 B1
A2 B2
A3 B3

目的:将每一行打印到一个新文件中。每个新文件都应具有相同的名称,例如'file.txt'。每个新文件都应打印到其自己的新文件夹中。文件夹名称应取自输入文件中相应行的第一个字段。生成的文件夹结构:

home
|__input.txt
|
|__A1
|  |__file.txt
|
|__A2
|  |__file.txt
|
|__A3
|  |__file.txt

我的 awk 使用输入的文件名创建文件:

$ awk '{F = ".txt"} {print > F}' input.txt

我的 awk 使用输入的文件夹名称创建文件夹:

$ awk '{print "mkdir "}' input.txt | sh

但是如何将这些组合起来并使用输入的文件夹名称创建文件夹但保持相同的文件名 'file.txt'?

你不是真的"adding mkdir into the awk line"。您正在将 awk 的输出传输到 shell。我认为最好用一个 shell 脚本来完成(无论如何你都需要 shell 来调用 mkdir):

input=input.txt
newfile=file.txt
while IFS= read -r line; do
    first="${line% *}"                #This means "the line up to first space"
    mkdir "$first"
    echo "$line" > "$first/$newfile"
done < "$input"