bash - 如何在 BASH 中用另一个文件中的相应行填充一个文件中的空行?

标签 bash awk cut

我有两个文件,file1.txtfile2.txt。每个都有相同数量的行,但 file1.txt 中的一些行是空的。这在并行显示两个文件的内容时最容易看出:

file1.txt     file2.txt
cat           bear
fish          eagle
spider        leopard
              snail
catfish       rainbow trout
              snake
              koala
rabbit        fish

我需要将这些文件组合在一起,这样 file1.txt 中的空行就会被 file2.txt 中的行(相同行号)中的数据填充file3.txt 中的结果如下所示:

cat
fish
spider
snail
catfish
snake
koala
rabbit

到目前为止,我能做的最好的事情是创建一个 while read -r line 循环,创建一个计数器来计算 while 循环已经循环了多少次,然后使用 if 条件来检查如果$line为空,则使用cut根据计数器上的数字从file2.txt中获取行号。这种方法看起来效率很低。

  • 有时 file2.txt 可能包含一些空行。如果 file1.txt 有一个空行并且 file2.txt 在同一位置也有一个空行,结果是 file3.txt< 中的一个空行

如何用另一个文件中的相应行填充一个文件中的空行?

最佳答案

paste file1.txt file2.txt | awk -F '\t' '$1 { print $1 ; next } { print $2 }'

关于bash - 如何在 BASH 中用另一个文件中的相应行填充一个文件中的空行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22110377/

相关文章:

linux - 基于报告值(value)的电子邮件

regex - 对特殊字符使用 sed

linux - 使用 sed 搜索所有文件的前 3 次和后 3 次出现

linux - 打印文件中的最后一个字段并将其用作另一个文件的名称

bash - bash 中的多行模式匹配

unix - 如何从剪切命令获取倒数第二个字段

bash - Unix 验证文件没有内容和空行

linux - 在 bash 脚本文件中登录

Linux find 命令并同时复制并重命名它们

bash - 如何仅使用 "grep"和 "cut"bash 命令打印一行的最后一列