더 짧은 시간에 여러 파일을 사용자에게 표시하려고 합니다. 이러한 파일은 비교적 긴 줄을 가지며 동일한 텍스트를 포함하지만 언어가 다릅니다(줄 길이의 차이가 예상됩니다).
예:
파일 1.txt
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut lectus arcu bibendum at.
file2.txt(위, Google 번역)
The pain itself is the love of the pain, the main ecological problems, but I give this kind of time to fall down, so that some great pain and pain.
To drink at the bed of the bow.
예상되는 결과:
Lorem ipsum dolor sit amet, consectetur adipiscing The pain itself is the love of the pain, the main
elit, sed do eiusmod tempor incididunt ut labore et ecological problems, but I give this kind of time
dolore magna aliqua. to fall down, so that some great pain and pain.
Ut lectus arcu bibendum at. To drink at the bed of the bow.
줄이 해당 줄보다 짧고 줄 바꿈되지 않는 경우 나머지 공간은 비워 두어야 합니다. 이는 화면 크기에 맞게 구분 기호를 변경하여 2개 및 3개 파일에 대해 작동합니다. 나는 그것을 작동시키기 위해 컬럼과 pr과 함께 페이스트를 사용해 보았습니다. POSIX 규정 준수를 우선시하세요.
paste file1.txt file2.txt | column -t -s $'\t'
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et
dolore magna aliqua. The pain itself is the love of the pain, the main ecological
problems, but I give this kind of time to fall down, so that some great pain and pain.
Ut lectus arcu bibendum at. To drink at the bed of the bow.
문제는 첫 번째 파일의 줄이 터미널 중앙에 도달할 때 줄 바꿈되지 않는 반면 두 번째 파일은 줄 바꿈되지만 중앙이 아닌 줄의 시작 부분에서 시작된다는 것입니다.
도움을 주시면 감사하겠습니다.
답변1
줄 바꿈 수행첫 번째그리고fold
paste <(fold -sw 40 file1.txt) <(fold -sw 40 file2.txt) | column -t -s $'\t'
터미널 크기에 맞게 조정하려면 다음을 수행하십시오.
width=$(( (COLUMNS - 4) / 2))
paste <(fold -sw $width file1.txt) <(fold -sw $width file2.txt) | column -t -s $'\t'
줄을 나란히 줄바꿈하려면 파일을 한 줄씩 반복해야 합니다.
while IFS= read -r -u3 line1
IFS= read -r -u4 line2
do
paste <(fold -sw $width <<<"$line1") \
<(fold -sw $width <<<"$line2")
done 3< file1.txt 4< file2.txt \
| column -t -s $'\t'
예제 입력 파일과 너비가 45인 경우
Lorem ipsum dolor sit amet, consectetur The pain itself is the love of the pain, the
adipiscing elit, sed do eiusmod tempor main ecological problems, but I give this
incididunt ut labore et dolore magna aliqua. kind of time to fall down, so that some
great pain and pain.
Ut lectus arcu bibendum at. To drink at the bed of the bow.
이 시점에서 우리는 POSIX 셸을 넘어섰습니다. 바로 bash입니다. 또한 다른 프로그래밍 언어를 사용하는 것도 고려해야 합니다.