V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
1746855469
V2EX  ›  程序员

如何替换文本中满足条件的换行符?

  •  
  •   1746855469 · 2023-06-30 06:51:39 +08:00 · 1561 次点击
    这是一个创建于 499 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有一个英语单词的文本文件想导入欧路词典,但欧路不支持一词多行。文件的格式如下:

    ability,n. 能力,能耐;才能
    able,adj. 能; 有能力的;能干的
    about,"prep. 关于;大约
    n. 大致;粗枝大叶;不拘小节的人
    adj. 在附近的;四处走动的;在起作用的
    adv. 大约;周围;到处"
    above,"prep. 超过;在……上面;在……之上
    n. 上文
    adj. 上文的
    adv. 在上面;在上文"
    accident,n. 事故;意外; 意外事件;机遇
    accurate,adj. 精确的
    ache,"n. 疼痛
    vi. 疼痛;渴望"
    activity,n. 活动;行动;活跃
    actor,n. 男演员;行动者;作用物
    actress,n. 女演员
    actually,adv. 实际上;事实上
    

    想请问,有什么简单的办法,能把解释中带引号"的单词( about, above, ache )的换行符换成空格,合并到一行里?最好能用现成的软件解决,必须要用到脚本的话,不知能不能赏下完整能跑的代码。

    先行谢过。

    15 条回复    2023-06-30 15:51:55 +08:00
    sun1719
        1
    sun1719  
       2023-06-30 07:17:09 +08:00
    word ,通配符替换
    nopdan
        2
    nopdan  
       2023-06-30 07:37:11 +08:00
    nopdan
        3
    nopdan  
       2023-06-30 07:38:33 +08:00
    ![Snipaste_2023-06-30_07-35-56.png]( https://s2.loli.net/2023/06/30/3ifVQ8jwLn4ONmk.png)
    4641585
        4
    4641585  
       2023-06-30 07:51:36 +08:00
    用正则把引号之后的第一个换行符删掉,循环跑到没变化就完事了。
    ho121
        5
    ho121  
       2023-06-30 07:59:40 +08:00 via Android
    这个看起来很像 csv ,导入 Excel 然后删除换行再保存
    junyee
        6
    junyee  
       2023-06-30 08:22:35 +08:00
    看起来引号新起的一行都是以单词加小数点开头.
    以 notepad2 为例可以这样(不含引号):


    1: [勾]正则表达式搜索:
    "^([a-z]+\.)" -> "++++\1"

    2: [勾]转义反斜线
    "\r\n++++" -> ""

    "\n++++" -> ""
    ispinfx
        7
    ispinfx  
       2023-06-30 08:24:11 +08:00 via iPhone
    一眼 csv
    dsgdsfh
        8
    dsgdsfh  
       2023-06-30 08:27:03 +08:00
    其实完全可以换个思路,让 ChatGPT 帮你实现
    https://s1.locimg.com/2023/06/30/bc3de4c474938.png
    tramm
        9
    tramm  
       2023-06-30 08:27:48 +08:00
    专业的事情还是让专业的人来

    你不理财, 财不离你
    nuk
        10
    nuk  
       2023-06-30 08:38:50 +08:00
    awk '/".+/,/"$/{printf "%s ",$0}'
    nuk
        11
    nuk  
       2023-06-30 08:46:29 +08:00   ❤️ 1
    忘了打印没匹配到了的,按照原义匹配:
    awk '/".+/,/"$/{if ($0 !~ /"$/) {printf "%s ",$0; next;}} {print $0}'
    csrocks
        12
    csrocks  
       2023-06-30 09:34:50 +08:00
    freedomSky
        13
    freedomSky  
       2023-06-30 09:47:01 +08:00
    $ sed ':a /".*[^"]$/{N;s/\n/ /g; ta}' data

    ability,n. 能力,能耐;才能
    able,adj. 能; 有能力的;能干的
    about,"prep. 关于;大约 n. 大致;粗枝大叶;不拘小节的人 adj. 在附近的;四处走动的;在起作用的 adv. 大约;周围;到处"
    above,"prep. 超过;在……上面;在……之上 n. 上文 adj. 上文的 adv. 在上面;在上文"
    accident,n. 事故;意外; 意外事件;机遇
    accurate,adj. 精确的
    ache,"n. 疼痛 vi. 疼痛;渴望"
    activity,n. 活动;行动;活跃
    actor,n. 男演员;行动者;作用物
    actress,n. 女演员
    actually,adv. 实际上;事实上
    laqow
        14
    laqow  
       2023-06-30 14:40:31 +08:00
    csv 如果格式没问题的话,非手动回车换行结尾是\r ,手动回车是\r\n 或\n
    toan
        15
    toan  
       2023-06-30 15:51:55 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2562 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 05:51 · PVG 13:51 · LAX 21:51 · JFK 00:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.