![sed 또는 awk를 사용하여 패턴의 줄을 결합하시겠습니까?](https://linux55.com/image/48951/sed%20%EB%98%90%EB%8A%94%20awk%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%8C%A8%ED%84%B4%EC%9D%98%20%EC%A4%84%EC%9D%84%20%EA%B2%B0%ED%95%A9%ED%95%98%EC%8B%9C%EA%B2%A0%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
이 입력을 여는 방법을 잘 모르겠습니다.
A
B
C
apartner
bpartner
cpartner
다음 출력을 입력하십시오.
A apartner
B bpartner
c cpartner
이 패턴은 80줄 파일에 있고 40줄이 필요합니다. 또한 각 항목을 에 어떻게 첨부할 수 있나요 <il><b>A</b> <i>apartner</i></il>
?
답변1
사용처 :pr
coreutils
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
물론 head
and 대신 or를 사용할 수 있습니다.tail
sed
awk
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