【发布时间】:2019-07-26 08:35:41
【问题描述】:
我对此很陌生,并且意识到已经发布了类似的问题,但我无法完全弄清楚我需要从他们那里得到什么。我有两个文件。
文件 1:
1: Read 1
2: Sequence 1
3: +
4: Quality 1
5: Read 2
6: Sequence 2
7: +
8: Quality 2
...
文件 2:
1: Sequence 1 edited
2: Sequence 2 edited
3: Sequence 3 edited
4: Sequence 4 edited
...
从第一个文件的第 2 行开始,我需要将每 4 行替换为第二个文件中的下一个读取行,因此结果如下所示:
1: Read 1
2: Sequence 1 edited
3: +
4: Quality 1
5: Read 2
6: Sequence 2 edited
7: +
8: Quality 2
...
到目前为止,我一直在使用这段代码,它似乎可以工作,但作为命令很慢,作为 shell 脚本也很痛苦:
Counter=2
while read p; do echo $Counter; echo $p;
sed -i~ "${Counter}s/^.*/$p/" file 1;
Counter=$((Counter+4)); done < file 2
我认为我应该能够使用 awk 来完成,但我不确定如何。任何帮助或改进将不胜感激!
【问题讨论】:
-
为了便于阅读,请将单行分成多行。
标签: bash awk sed replace while-loop