bash shell - 如何在找到匹配模式后使用其他文件快速传输特定于文件的内容

时间:2017-11-29 05:18:09

标签: bash shell awk sed

>cat file1.txt
aa bb
ccc dd
ee fff
>cat file2.txt
1
2
3

我想得到如下结果:

aa1bb
ccc2dd
ee3fff

file1.txt中的空格将被file2.txt中的数字替换。

3 个答案:

答案 0 :(得分:3)

paste + awk 方法:

paste file1.txt file2.txt | awk '{ print $1$3$2 }'

输出:

aa1bb
ccc2dd
ee3fff

答案 1 :(得分:1)

awk的直接方式,

$ awk 'NR==FNR{a[NR]=$0;next}{sub(/\ /,a[FNR])}1' file2 file1
aa1bb
ccc2dd
ee3fff

简要说明,

  • NR==FNR{a[NR]=$0;next}:将file2中的每条记录存储到数组a
  • sub(/\ /,a[FNR]):用a[FNR]替换file2中的空格,其中FNR将是file2中的记录号。
  • 附加1将在file2中打印每个已处理的行

答案 2 :(得分:0)

使用bash while-read循环

while read -u3 a b; read -u4 n; do 
    echo "$a$n$b"
done 3<file1.txt 4<file2.txt