두 개의 파일이 있는데 그 중 하나는 아래와 같이 빈 줄로 구분된 서로 다른 섹션이 있습니다.
a11 a12 a13
b11 b12 b13
c11 c12 c13
a21 a22 a23
b21 b22 b23
c21 c22 c23
d21 d22 d23
a31 a32 a33
b31 b32 b33
두 번째 파일의 줄 수는 첫 번째 파일의 섹션 수와 같습니다.
x1 X2
y1 y2
z1 z2
원하는 출력을 출력
a11 a12 a13 x1 x2
b11 b12 b13
c11 c12 c13
a21 a22 a23 y1 y2
b21 b22 b23
c21 c22 c23
d21 d22 d23
a31 a32 a33 z1 z2
b31 b32 b33
시도했지만 paste file1 file2
원하는 결과가 나오지 않았습니다.
답변1
$ awk 'NR==FNR{a[NR]=$0; next} {print $0 (pNF ? "" : OFS a[++c]); pNF=NF}' file2 file1
a11 a12 a13 x1 X2
b11 b12 b13
c11 c12 c13
a21 a22 a23 y1 y2
b21 b22 b23
c21 c22 c23
d21 d22 d23
a31 a32 a33 z1 z2
b31 b32 b33
답변2
awk의 범위 연산자를 사용하십시오.
$ awk '
!B {a[NR]=$0;next}
NF,!NF {
if (!f++) $(NF+1) = a[++i]
f = NF
};1
' ./file2 B=1 ./file1
단락 모드에서 GNU awk 유틸리티를 사용하십시오.
$ awk '
BEGIN {
factory_setting = RS
RS = ""
paragrph_mode = RS
OFS = FS = "\n"
ORS = "\n\n"
f2 = ARGV[2]
ARGV[2] = ""
}
{
RS = factory_setting
if (getline t < f2 > 0) $1=$1" "t
RS = paragrph_mode
}1
' ./file1 ./file2
a11 a12 a13 x1 x2
b11 b12 b13
c11 c12 c13
a21 a22 a23 x2 y2
b21 b22 b23
c21 c22 c23
d21 d22 d23
a31 a32 a33 x3 y3
b31 b32 b33
$