【问题标题】:How do I write output of a command to multiple text files where the file names are based on part of the command output?如何将命令的输出写入多个文本文件,其中文件名基于部分命令输出?
【发布时间】:2021-08-05 01:13:08
【问题描述】:

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

FILE1: abc1
FILE2: def2
FILE3: ghi3

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

类似

echo "text" >> FILE1

但让它递归地做

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

【问题讨论】:

  • 编辑中的“递归执行”是什么意思?
  • @tink 哦,我想我补充一点细节。我的意思是 echo "text" >> FILE1 但在多行输出上。

标签: linux command-line


【解决方案1】:

只需将您的命令通过管道传输到 awk:

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

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

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

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

【讨论】:

  • 这太完美了!谢谢!
  • 欢迎。我刚刚在您的问题中看到了编辑;当然,你也可以在 awk 中使用>> ...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-23
  • 2012-02-18
  • 1970-01-01
  • 1970-01-01
  • 2016-12-30
  • 2011-04-17
  • 1970-01-01
相关资源
最近更新 更多