AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 671216
Accepted
puwlah
puwlah
Asked: 2021-09-30 21:21:06 +0800 CST2021-09-30 21:21:06 +0800 CST 2021-09-30 21:21:06 +0800 CST

在保持对齐的同时并排合并两个 ASCII 艺术文件的正确方法是什么?

  • 772

艺术文件(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. 如果它们都不是工作的正确工具,除了编写一个新程序之外,我可以使用哪些预先存在的解决方案?
linux paste
  • 1 1 个回答
  • 331 Views

1 个回答

  • Voted
  1. Best Answer
    Quasímodo
    2021-10-01T03:45:28+08:002021-10-01T03:45:28+08:00

    问题是每条线都有不同的长度。最简单的解决方案是为 提供足够大的宽度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然后从标题文件中获取一行并将其打印在刚刚打印的艺术行旁边。

    请注意,您可以添加或减去 in 的值l来printf临时调整间距。

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

相关问题

  • 有没有办法让 ls 只显示某些目录的隐藏文件?

  • 使用键盘快捷键启动/停止 systemd 服务 [关闭]

  • 需要一些系统调用

  • astyle 不会更改源文件格式

  • 通过标签将根文件系统传递给linux内核

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve