繁体   English   中英

Append 特定字符串到 output 文件的每一行的开头,同时将命令的结果流式传输到同一文件

[英]Append specific string to the start of each line of an output file while streaming result of a command to the same file

不太确定如何措辞。 我正在尝试编写一个 shell 命令,该命令将 append 文件名的第一部分到每行的开头,同时在 for 循环中流式传输命令的结果,这将在文件中创建行。 同时,我正在删除 stream 中我不想写入文件的某些行。 例如,我有 4 个成对的文件,基本上是 2 对文件。

file1.a.txt
1
2

file1.b.txt 
a
b
c

file2.a.txt
3
8
4

file2.b.txt
d
c
c
a

当我运行 shell 命令时,我希望只获得一个文件名的第一部分以及我的脚本命令的 output 是什么。 脚本命令将始终生成行数等于 b.txt 中的行数的结果以及我不需要预期结果的某些行:

结果.txt

file1 script result for line containing a in file1.b.txt
file1 script result for line containing b in file1.b.txt
file1 script result for line containing c in file1.b.txt
file2 script result for line containing d in file2.b.txt
file2 script result for line containing c in file2.b.txt
file2 script result for line containing c in file2.b.txt
file2 script result for line containing a in file2.b.txt

到目前为止我所拥有的:

for x in *a.txt; do echo $(x%.*.*};script command result | sed '/^\(/d'| sed '/^0/d' >> result.txt

这是用正确的行生成result.txt,但是我试图从append 到每行开头的名称从每行的开头丢失。 也就是说,它被打印到屏幕上,我相信是由于回声。 我需要帮助才能达到我想要的结果。

你想要:

for x in *a.txt; do
   script command result | 
   sed '/^\(/d'| sed '/^0/d' |
   sed "s/^/$x/" >> result.txt
done

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM