我有一个文件:
aaa
bbb
ccc
另一个:
111
222
333
444
.
.
999
附加后我想要的输出应该是:
aaa 111
bbb 222
ccc 333
aaa 444
bbb 555
ccc 666
.
.
.
aaa nnn
我可以使用 awk 和 sed 附加固定字符串,但我无法弄清楚使用不同字符串循环固定行数的方法。虽然第二个长文件作为文件存在,但要附加的字符串不必在文件中,但由于实际情况下有 11 行循环,我认为另一个文件是读取它们的正确方法。
答案1
使用 sed、bash、一个函数和两个全局变量(counter 和 f1)。
counter=1
getnext() {
f1=$(sed -n "${counter}p" file1)
if [[ "$f1" == "" ]]; then
counter=1
f1=$(sed -n "${counter}p" file1)
fi
((counter++))
}
while read -r f2; do getnext; echo "$f1 $f2"; done <file2
输出:
AAA 111 222 ccc 333 444 555 号 ccc666 AAA 777 888 ccc 999
答案2
使用 awk 的解决方案。前置文件(即第一列)被加载到部分数组arr
中BEGIN
。-
(stdin)可以用文件名替换。
第二个文件是正常的 awk 输入。
echo -e 'a\nb\nc'|
awk 'BEGIN {
while ((getline < "-") > 0) {
arr[i++] = $0
}
}
{
if (j in arr) {
print arr[j++], $0
next
}
j = 0
print arr[j++], $0
}' <(echo {1..10}|tr ' ' '\n')