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
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1487274
Accepted
Kris
Kris
Asked: 2023-09-28 17:35:00 +0800 CST2023-09-28 17:35:00 +0800 CST 2023-09-28 17:35:00 +0800 CST

在文本文件中创建列

  • 772

我使用图像文本生成器从术语表图像中提取信息,如下所示:

word1      :meaning1
word2      :meaning2
word3      :meaning3
word4      :meaning4

这导致了一个如下所示的文本文件:

word1
word2
word3
word4
:meaning1
:meaning2
:meaning3
:meaning4

我觉得从 pdf 文档复制类似术语表的文本时,这种情况也很常见。有没有什么方便的方法来重新创建原始文本配置?最好创建链接单词和含义的列,如果没有单元格就更好了。

我想我正在寻找一种将几行的内容粘贴/附加到几个现有行的末尾的方法。

我能想到的唯一解决方案是将所有内容粘贴到 LibreOffice writer 中并选择列,但这只会在演示方面重新创建源文档,并且没有实际用途。

问题是:

如何将提取的文本更改为两列,使其看起来像图片中的那样,如下所示:

word1      :meaning1
word2      :meaning2
word3      :meaning3
word4      :meaning4

我更喜欢 GUI 工具,但也适用非高级 CLI 解决方案。

software-recommendation
  • 3 3 个回答
  • 143 Views

3 个回答

  • Voted
  1. steeldriver
    2023-09-28T17:50:09+08:002023-09-28T17:50:09+08:00

    使用以下命令的非高级 CLI 解决方案pr:

    $ pr -T2 < file.txt
    word1                               :meaning1
    word2                               :meaning2
    word3                               :meaning3
    word4                               :meaning4
    

    或使用rs命令:

    $ rs -t 0 2 < file.txt
    word1      :meaning1
    word2      :meaning2
    word3      :meaning3
    word4      :meaning4
    
    • 0
  2. Raffa
    2023-09-28T18:03:37+08:002023-09-28T18:03:37+08:00

    中高级 CLI 解决方案具有awk:

    $ cat file
    word1
    word2
    word3
    word4
    :meaning1
    :meaning2
    :meaning3
    :meaning4
    

    基于正则表达式模式,即前导冒号^:或无前导冒号^[^:](假设一致),如下所示:

    $ awk '/^[^:]/ {
            wrd[i++] = $0
    }
    
    /^:/ {
            def[j++] = $0
    }
    
    END {
            for (k = 0; k < i; k++) {
                    printf "%s\t%s\n", wrd[k], def[k]
            }
    }' file
    word1   :meaning1
    word2   :meaning2
    word3   :meaning3
    word4   :meaning4
    

    或者基于行号,即将文件分为前半部分和后半部分,如下所示:

    $ awk '{
            lines[NR] = $0
    }
    
    END {
            k = NR / 2 + 1
            for (j = 1; j <= NR / 2; j++) {
                    printf "%s\t%s\n", lines[j], lines[k++]
            }
    }' file
    word1   :meaning1
    word2   :meaning2
    word3   :meaning3
    word4   :meaning4
    
    • 0
  3. Best Answer
    kro
    2023-09-29T04:11:24+08:002023-09-29T04:11:24+08:00

    使用高级文本编辑器或 IDE,例如Geany。

    例如,使用Geany,您可以Ctrl在用鼠标选择文本的同时垂直编辑文本。

    选择“垂直”后,只需将其粘贴到第一行的末尾,然后根据需要多次按 Tab 键,具体取决于列之间所需的空间。

    • 0

相关问题

  • 有哪些科学绘图软件可用?

  • 最好的思维导图软件是什么?

  • 服务器的最佳rootkit删除工具?

  • 从 Ubuntu 连接到 Windows 的最佳远程桌面工具是什么?[关闭]

  • 是否有 Paint.NET 替代方案?

Sidebar

Stats

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

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve