Linux 或 Mac 上有没有类似“文本整理器”这样的工具 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
adrianzhang
V2EX    问与答

Linux 或 Mac 上有没有类似“文本整理器”这样的工具

  •  
  •   adrianzhang 2024-10-07 17:34:04 +08:00 1658 次点击
    这是一个创建于 367 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有一些 TXT 文件,格式是回车截断的,宽度不同,例子放在下面,需要改成无硬格式的文本。
    Windows 上有“文本整理器”这样的软件可以处理,但难以跟其他工具做成整个处理流,例如,处理好 TXT 格式后还要处理错别字标点等,还要制作成不同文件格式等工作,所以想找找 Linux 上有没有类似软件。
    搜了半天也找不到,关键词都不知道用什么好。

    例子如下:

    我用 P4 看小说 P4 被
    我摔坏了 内屏坏了
    暂时不能修 小半个
    屏黑了 所以要让小
    说每行 10 个字就能看

    正好下到个小说就是
    这样的 但是其余的
    不会排版
    百度知道里讲什么调
    整 TXT 文件宽度的根
    本没用 拉开后还是
    满的!!
    50 分很高了吧!!一
    定要随便复制出来贴
    在哪里都达到上面的
    效果才算!!
    24 条回复    2024-10-08 10:33:33 +08:00
    renmu
        1
    renmu  
       2024-10-07 17:36:43 +08:00 via Android
    你想去除换行?随便哪个语言实现都很容易
    adrianzhang
        2
    adrianzhang  
    OP
       2024-10-07 17:40:46 +08:00
    @renmu 有很多文件,宽度各个不同,段落间空行数等也不同,空格或 Tab 也乱,总之就是排版乱七八糟的。这么一堆文件需要处理,是需要一个程序的。这不知道了 Windows 有,想看看 Linux 的有没有。
    diivL
        3
    diivL  
       2024-10-07 17:42:40 +08:00
    sed, awk
    adrianzhang
        4
    adrianzhang  
    OP
       2024-10-07 17:45:06 +08:00
    @diivL 怎么判断宽度呢?
    mayli
        5
    mayli  
       2024-10-07 17:48:08 +08:00
    推荐自学正则
    adrianzhang
        6
    adrianzhang  
    OP
       2024-10-07 17:54:15 +08:00
    @mayli 学的不精。怎么用正则判断?
    imjiaoyuan
        7
    imjiaoyuan  
       2024-10-07 17:56:25 +08:00 via Android
    可以用 AI 写吧,Linux 下用正则其实挺容易实现的个人感觉
    adrianzhang
        8
    adrianzhang  
    OP
       2024-10-07 18:03:57 +08:00
    @imjiaoyuan 确实想过这个途径,但不知道该向 AI 提供什么样问题才能得到答案。
    合并行?不对。
    june4
        9
    june4  
       2024-10-07 18:08:27 +08:00
    都不用正则,几行代码就行了。先把 2 个以上连续回车的替换成一个特殊文字,然后把一个回车的替换成空字符串,再把特殊文字替换回二个回车,搞定。
    adrianzhang
        10
    adrianzhang  
    OP
       2024-10-07 18:12:25 +08:00
    @june4 用 Word 是这么整理的。但是 Linux 下怎么干呢?
    june4
        11
    june4  
       2024-10-07 18:30:19 +08:00   1
    我以前写过一个,找了下还在 注意这里我转的文件都是\r\n 换行的,你看你的情况可能要改一下

    #!/usr/bin/node
    const assert = require('node:assert/strict')
    const fs = require('node:fs')
    const filename = process.argv[2]
    assert(filename, 'Missing filename arg')
    console.log('=> Filename:', filename)

    const TMP_LINE = '{{TMP_LINE}}'
    let cOntent= fs.readFileSync(filename, 'utf-8')
    cOntent= content.replaceAll(/\r\n\r\n/g, TMP_LINE + TMP_LINE)
    cOntent= content.replaceAll(/\r\n/g, '')
    cOntent= content.replaceAll(TMP_LINE, '\n')
    fs.writeFileSync(filename + '.joined', content)
    saranz
        12
    saranz  
       2024-10-07 18:42:36 +08:00
    这个不就是找到 \n \r 然后删除的事嘛,就是用 shell 都能办的事。
    adrianzhang
        13
    adrianzhang  
    OP
       2024-10-07 19:04:43 +08:00
    @june4 #11 谢谢!我试试看。
    adrianzhang
        14
    adrianzhang  
    OP
       2024-10-07 19:05:09 +08:00
    @saranz #12 不一定啊,也许有\n\n 等等各种情况。
    LaTero
        15
    LaTero  
       2024-10-07 19:29:08 +08:00 via Android   1
    把不是紧跟着标点符号的\n 删掉试试
    adrianzhang
        16
    adrianzhang  
    OP
       2024-10-07 19:34:10 +08:00
    @LaTero #15 是个挺好的思路。
    caomu
        17
    caomu  
       2024-10-07 20:29:13 +08:00 via Android   1
    可以搜索一下 文本格式化工具 / text format ,有很多现成的工具
    TigerK
        18
    TigerK  
       2024-10-07 20:38:52 +08:00
    为什么不让神奇的 AI 替你整理呢?
    adrianzhang
        19
    adrianzhang  
    OP
       2024-10-07 21:07:26 +08:00
    @caomu #17 太好了!原来这个关键字。非常感谢!
    adrianzhang
        20
    adrianzhang  
    OP
       2024-10-07 21:08:17 +08:00
    @TigerK #18 因为需要批量处理,所以问 AI 也是问程序怎么写,可是我连关键字都不知道,17 楼刚给出来。
    saranz
        21
    saranz  
       2024-10-07 22:52:06 +08:00
    @adrianzhang \n\n 不一样是等于\n 吗,反正都是要删除的。
    adrianzhang
        22
    adrianzhang  
    OP
       2024-10-08 00:03:08 +08:00
    @saranz #21 嗯,总之很乱,需要程序处理很多情况。
    saranz
        23
    saranz  
       2024-10-08 08:43:15 +08:00
    @adrianzhang 万不离其中,最基本的单位就是 \n 。全部换成空值,不就是等于 0 吗。
    adrianzhang
        24
    adrianzhang  
    OP
       2024-10-08 10:33:33 +08:00
    @saranz 那怎么分段呢?看例子这样的,段间的分隔也是 n
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5449 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 06:42 PVG 14:42 LAX 23:42 JFK 02:42
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86