如何用单行命令将命令输出按对应文件名写入多个文本文件?
批量生成对应文件的单行命令
假设你原本生成输出的命令为 your_command,按照你要求的追加写入(等效于echo "text" >> FILE)的需求,有两种常用的实现方案:
方案1:awk实现(更简洁高效)
your_command | awk -F ': ' '{print $2 >> $1}'
说明
-F ': '指定每行的分隔符为冒号+空格,自动拆分出文件名($1)和待写入内容($2)>>对应追加写入逻辑,和你要求的效果完全一致,如果需要覆盖文件原有内容,替换为>即可
方案2:while循环实现(兼容性更好)
your_command | while IFS=": " read -r file content; do echo "$content" >> "$file"; done
说明
通过read命令直接拆分每行的文件名和内容,对低版本shell环境的兼容性更好。
注意事项
如果你的实际输出中,文件名和内容的分隔符不是冒号+空格,调整对应分隔符参数即可。
内容的提问来源于stack exchange,提问作者DmcZx
相关产品推荐
相关产品推荐

