如何将命令的输出写入文件名基于部分命令输出的多个文本文件?

How do I write output of a command to multiple text files where the file names are based on part of the command output?

我有一个命令以这种格式向控制台输出几行文本:<FILE_NAME>: <STRING_VALUE>。 示例:

FILE1: abc1
FILE2: def2
FILE3: ghi3

我想创建文件 FILE1、FILE2 和 FILE3,内容分别为 abc1、def2 和 ghi3。

类似

echo "text" >> FILE1

但让它递归执行

执行此操作的单行命令是什么?

只需将您的命令通过管道传递给 awk:

command | awk -F ': *' '{print  > }'

我们将字段分隔符定义为F ': *'(冒号后跟任意数量的空格)。

我们打印每行的第二个字段并将其重定向到第一个字段的值。

$ ls
FILE1  FILE2  FILE3
$ cat FILE*
abc1
def2
ghi3