sed 또는 awk를 사용하여 패턴의 줄을 결합하시겠습니까?

sed 또는 awk를 사용하여 패턴의 줄을 결합하시겠습니까?

이 입력을 여는 방법을 잘 모르겠습니다.

A
B
C
apartner
bpartner
cpartner

다음 출력을 입력하십시오.

A apartner
B bpartner
c cpartner

이 패턴은 80줄 파일에 있고 40줄이 필요합니다. 또한 각 항목을 에 어떻게 첨부할 수 있나요 <il><b>A</b> <i>apartner</i></il>?

답변1

사용처 :prcoreutils

pr -2 -t -l 40 -s' ' $oldfile > $newfile

동일하게 사용 pr하고 태그를 추가하세요 sed.

pr -2 -t -l 40 -J -S'</b> <i>' $oldfile | sed 's|^|<il><b>|;s|$|</i></il>|' > $newfile

산출:

<il><b>A</b> <i>apartner</i></il>
<il><b>B</b> <i>bpartner</i></il>
<il><b>C</b> <i>cpartner</i></il>

답변2

[암소 비슷한 일종의 영양]

사용법이 중요하지 않은 경우 sed가장 awk간단한 솔루션으로 다음을 권장합니다.

먼저 파일을 두 부분으로 나눕니다.

head -n 40 file >file1
tail -n 40 file >file2

그런 다음 다음 줄을 결합하십시오.

paste --delimiters=" " file1 file2

물론 headand 대신 or를 사용할 수 있습니다.tailsedawk

sed -n -e 1,40p combinedfile >file1
sed -n -e 41,80p combinedfile >file2
awk 'NR < 41 {print;}' combinedfile >file1
awk 'NR > 40 {print;}' combinedfile >file2

좋아요, 방금 깨달았습니다. 순수한 awk 솔루션은 생각만큼 복잡하지 않습니다.

awk 'NR < 41 { lines[NR]=$0; next; }; {print lines[NR-40],$0}' combinedfile

관련 정보