有没有办法使用bash shell逐行组合两个文件

时间:2017-03-03 22:48:13

标签: bash shell

请参阅示例: 让我们说我有File1.txt有三行(a,b,c);文件2也有3行(1,2,3)。

File1中

a
b
c

文件2

1
2
3
...

我想得到如下的A File3:

档案3

a1
a2
a3
b1
b2
b3
c1
c2
c3
...

非常感谢!

1 个答案:

答案 0 :(得分:1)

假设bash 4.x:

#!/usr/bin/env bash
#              ^^^^-- NOT /bin/sh

readarray -t a <file1   # read each line of file1 into an element of the array "a"
readarray -t b <file2   # read each line of file2 into an element of the array "b"
for itemA in "${a[@]}"; do
  for itemB in "${b[@]}"; do
    printf '%s%s\n' "$itemA" "$itemB"
  done
done

在旧版(4.0之前版本)的bash版本中,您可以将readarray -t a <file1readarray -t b <file2替换为:

IFS=$'\n' read -r -d '' -a a < <(cat -- file1 && printf '\0')
IFS=$'\n' read -r -d '' -a b < <(cat -- file2 && printf '\0')