정렬을 유지하면서 두 개의 ASCII 아트 파일을 나란히 병합하는 올바른 방법은 무엇입니까?

정렬을 유지하면서 두 개의 ASCII 아트 파일을 나란히 병합하는 올바른 방법은 무엇입니까?

아트 파일( cat -A출력):

 .::""-,                      .::""-.$
/::     \                    /::     \$
|::     |   _..--""""--.._   |::     |$
'\:.__ /  .'              '.  \:.__ /$
 ||____|.' _..---"````'---. '.||____|$
 ||:.  |_.'                `'.||:.  |$
 ||:.-'`       .-----.        ';:.  |$
 ||/         .'       '.        \.  |$
 ||         / '-.   '. \\       |.  |$
 ||:.     _| '   \_\_\\/(        \  |$
 ||:.\_.-' )     ||   m `\.--._.-""-;$
 ||:.(_ . '\ __'// m ^_/ /    '.   _.`.$
 ||:.  \__^/` _)```'-...'   _ .-'.'    '-.$
 ||:..-'__  .'        '. . '      '.      `'.$
 ||:(_.' .`'        _. ' '-.         '.   . ''-._$
 ||:. :   '.     .'          '.  . ' ' '.`       '._$
 ||:.  :    '. .'     .::""-: .''.        ' .   . ' ':::''-.$
 ||:. .'    ..' .    /::     \    '.        . '.    /::     \$
 ||:.'    .'      '. |::     |    _.:---""---.._'   |::     |$
 ||.      :          '\:.__ /   .'    -.  .-    '.   \:.__ /$
 ||:     : '.       . ||____|_.'    .--.  .--.    '._||____|$
 ||:'.___:   '.   .'  ||:.  |      (    \/    )      ||:.  |$
 ||:___| \     '. :   ||:.  |       '-.    .-'       ||:.  |$
 [[____]  '.     '.-._||:.  |      __  '..'  __      ||:.  |$
            '.    :   ||:.  |     (__\ (\/) /__)     ||:.  |$
              '.  :   ||:.  |        `  \/  `        ||:.  |$
                '-:   ||:.  |           ()           ||:.  |$
                   '._||:.  |________________________||:.  |$
                      ||:___|'-.-'-.-'-.-'-.-'-.-'-.-||:___|$
                      [[____]                        [[____]$

제목 파일( cat -A출력):

$
$
  _________                     .__          $
 /   _____/____    _____ ______ |  |   ____  $
 \_____  \\__  \  /     \\____ \|  | _/ __ \ $
 /        \/ __ \|  Y Y  \  |_> >  |_\  ___/ $
/_______  (____  /__|_|  /   __/|____/\___  >$
        \/     \/      \/|__|             \/ $
___________              __                  $
\__    ___/___ ___  ____/  |_                $
  |    |_/ __ \\  \/  /\   __\               $
  |    |\  ___/ >    <  |  |                 $
  |____| \___  >__/\_ \ |__|                 $
             \/      \/                      $
$
$

art_file을 Caption_file과 나란히 병합하려고 합니다. 나는 지금까지 두 가지 방법을 시도했습니다.

  1. 사용pr -Jmt art_file caption_file

     .::""-,                      .::""-.
    /::     \                    /::     \
    |::     |   _..--""""--.._   |::     |        _________                        .__
    '\:.__ /  .'              '.  \:.__ /        /   _____/____    _____ ______ |  |     ____
     ||____|.' _..---"````'---. '.||____|        \_____  \\__    \  /     \\____ \|  | _/ __ \
     ||:.  |_.'                `'.||:.  |        /          \/ __ \|  Y Y  \  |_> >  |_\  ___/
     ||:.-'`       .-----.        ';:.  |       /_______  (____  /__|_|  /   __/|____/\___  >
     ||/         .'       '.        \.  |                 \/     \/      \/|__|             \/
     ||         / '-.   '. \\       |.  |       ___________                __
     ||:.     _| '   \_\_\\/(        \  |       \__      ___/___ ___  ____/  |_
     ||:.\_.-' )     ||   m `\.--._.-""-;         |      |_/ __ \\  \/  /\   __\
     ||:.(_ . '\ __'// m ^_/ /    '.   _.`.       |        |\  ___/ >    <  |  |
     ||:.  \__^/` _)```'-...'   _ .-'.'    '-.           |____| \___  >__/\_ \ |__|
     ||:..-'__  .'        '. . '      '.      `'.                      \/      \/
     ||:(_.' .`'        _. ' '-.         '.   . ''-._
     ||:. :   '.     .'          '.  . ' ' '.`       '._
     ||:.  :    '. .'     .::""-: .''.        ' .   . ' ':::''-.
     ||:. .'    ..' .    /::     \    '.        . '.    /::     \
     ||:.'    .'      '. |::     |    _.:---""---.._'   |::     |
     ||.      :          '\:.__ /   .'    -.  .-    '.   \:.__ /
     ||:     : '.       . ||____|_.'    .--.  .--.    '._||____|
     ||:'.___:   '.   .'  ||:.  |      (    \/    )      ||:.  |
     ||:___| \     '. :   ||:.  |       '-.    .-'       ||:.  |
     [[____]  '.     '.-._||:.  |      __  '..'  __      ||:.  |
                '.    :   ||:.  |     (__\ (\/) /__)     ||:.  |
                  '.  :   ||:.  |        `  \/  `        ||:.  |
                    '-:   ||:.  |           ()           ||:.  |
                       '._||:.  |________________________||:.  |
                          ||:___|'-.-'-.-'-.-'-.-'-.-'-.-||:___|
                          [[____]                        [[____]
    
  2. paste art_file caption_file

 .::""-,                      .::""-.
/::     \                    /::     \
|::     |   _..--""""--.._   |::     |        _________                     .__
'\:.__ /  .'              '.  \:.__ /        /   _____/____    _____ ______ |  |   ____
 ||____|.' _..---"````'---. '.||____|        \_____  \\__  \  /     \\____ \|  | _/ __ \
 ||:.  |_.'                `'.||:.  |        /        \/ __ \|  Y Y  \  |_> >  |_\  ___/
 ||:.-'`       .-----.        ';:.  |       /_______  (____  /__|_|  /   __/|____/\___  >
 ||/         .'       '.        \.  |               \/     \/      \/|__|             \/
 ||         / '-.   '. \\       |.  |       ___________              __
 ||:.     _| '   \_\_\\/(        \  |       \__    ___/___ ___  ____/  |_
 ||:.\_.-' )     ||   m `\.--._.-""-;         |    |_/ __ \\  \/  /\   __\
 ||:.(_ . '\ __'// m ^_/ /    '.   _.`.       |    |\  ___/ >    <  |  |
 ||:.  \__^/` _)```'-...'   _ .-'.'    '-.    |____| \___  >__/\_ \ |__|
 ||:..-'__  .'        '. . '      '.      `'.                    \/      \/
 ||:(_.' .`'        _. ' '-.         '.   . ''-._
 ||:. :   '.     .'          '.  . ' ' '.`       '._
 ||:.  :    '. .'     .::""-: .''.        ' .   . ' ':::''-.
 ||:. .'    ..' .    /::     \    '.        . '.    /::     \
 ||:.'    .'      '. |::     |    _.:---""---.._'   |::     |
 ||.      :          '\:.__ /   .'    -.  .-    '.   \:.__ /
 ||:     : '.       . ||____|_.'    .--.  .--.    '._||____|
 ||:'.___:   '.   .'  ||:.  |      (    \/    )      ||:.  |
 ||:___| \     '. :   ||:.  |       '-.    .-'       ||:.  |
 [[____]  '.     '.-._||:.  |      __  '..'  __      ||:.  |
            '.    :   ||:.  |     (__\ (\/) /__)     ||:.  |
              '.  :   ||:.  |        `  \/  `        ||:.  |
                '-:   ||:.  |           ()           ||:.  |
                   '._||:.  |________________________||:.  |
                      ||:___|'-.-'-.-'-.-'-.-'-.-'-.-||:___|
                      [[____]                        [[____]

둘 다 두 번째 파일의 정렬을 엉망으로 만드는 반면 붙여넣으면 더 나은 출력이 생성됩니다. 그래서 내 질문은 다음과 같습니다

  1. 을 사용하여 원하는 출력을 생성할 수 있습니까 paste? pr어쩌면 내가 몇 가지 옵션을 간과하고 있는 것은 아닐까?
  2. 그 중 어느 것도 작업에 적합한 도구가 아닌 경우 새 프로그램을 작성하는 대신 어떤 기존 솔루션을 사용할 수 있습니까?

답변1

문제는 각 줄의 길이가 다르다는 것입니다. 가장 간단한 해결책은 충분히 큰 너비를 제공하는 것입니다 pr.

pr -mtw 150 art_file caption_file

제목 텍스트를 더 가깝게 만들고 싶다면 추천합니다

awk '
  l<length && NR<=n{l=length}
  NR!=FNR{
    printf "%-"l"s", $0
    getline line < "caption"
    print line
  }
' n="$(wc -l < caption)" art art
  • n자막 파일의 줄 수입니다.
  • ln아트 파일의 첫 번째 줄 사이의 가장 긴 줄의 길이입니다.
  • printf모든 줄에 길이가 있도록 아트 파일을 공백으로 오른쪽에 채웁니다 l.
  • getline그런 다음 헤더 파일에서 한 줄을 가져와 방금 인쇄한 아트 줄 옆에 인쇄합니다.

lin 값을 더하거나 빼서 printf간격을 일시적으로 조정할 수 있습니다.

 .::""-,                      .::""-.
/::     \                    /::     \
|::     |   _..--""""--.._   |::     |                _________                     .__
'\:.__ /  .'              '.  \:.__ /                /   _____/____    _____ ______ |  |   ____
 ||____|.' _..---"````'---. '.||____|                \_____  \\__  \  /     \\____ \|  | _/ __ \
 ||:.  |_.'                `'.||:.  |                /        \/ __ \|  Y Y  \  |_> >  |_\  ___/
 ||:.-'`       .-----.        ';:.  |               /_______  (____  /__|_|  /   __/|____/\___  >
 ||/         .'       '.        \.  |                       \/     \/      \/|__|             \/
 ||         / '-.   '. \\       |.  |               ___________              __
 ||:.     _| '   \_\_\\/(        \  |               \__    ___/___ ___  ____/  |_
 ||:.\_.-' )     ||   m `\.--._.-""-;                 |    |_/ __ \\  \/  /\   __\
 ||:.(_ . '\ __'// m ^_/ /    '.   _.`.               |    |\  ___/ >    <  |  |
 ||:.  \__^/` _)```'-...'   _ .-'.'    '-.            |____| \___  >__/\_ \ |__|
 ||:..-'__  .'        '. . '      '.      `'.                    \/      \/
 ||:(_.' .`'        _. ' '-.         '.   . ''-._
 ||:. :   '.     .'          '.  . ' ' '.`       '._
 ||:.  :    '. .'     .::""-: .''.        ' .   . ' ':::''-.
 ||:. .'    ..' .    /::     \    '.        . '.    /::     \
 ||:.'    .'      '. |::     |    _.:---""---.._'   |::     |
 ||.      :          '\:.__ /   .'    -.  .-    '.   \:.__ /
 ||:     : '.       . ||____|_.'    .--.  .--.    '._||____|
 ||:'.___:   '.   .'  ||:.  |      (    \/    )      ||:.  |
 ||:___| \     '. :   ||:.  |       '-.    .-'       ||:.  |
 [[____]  '.     '.-._||:.  |      __  '..'  __      ||:.  |
            '.    :   ||:.  |     (__\ (\/) /__)     ||:.  |
              '.  :   ||:.  |        `  \/  `        ||:.  |
                '-:   ||:.  |           ()           ||:.  |
                   '._||:.  |________________________||:.  |
                      ||:___|'-.-'-.-'-.-'-.-'-.-'-.-||:___|
                      [[____]                        [[____]

관련 정보