1
renmu 39 天前 via Android
你想去除换行?随便哪个语言实现都很容易
|
2
adrianzhang OP @renmu 有很多文件,宽度各个不同,段落间空行数等也不同,空格或 Tab 也乱,总之就是排版乱七八糟的。这么一堆文件需要处理,是需要一个程序的。这不知道了 Windows 有,想看看 Linux 的有没有。
|
3
diivL 39 天前
sed, awk
|
4
adrianzhang OP @diivL 怎么判断宽度呢?
|
5
mayli 39 天前
推荐自学正则
|
6
adrianzhang OP @mayli 学的不精。怎么用正则判断?
|
7
imjiaoyuan 39 天前 via Android
可以用 AI 写吧,Linux 下用正则其实挺容易实现的个人感觉
|
8
adrianzhang OP @imjiaoyuan 确实想过这个途径,但不知道该向 AI 提供什么样问题才能得到答案。
合并行?不对。 |
9
june4 39 天前
都不用正则,几行代码就行了。先把 2 个以上连续回车的替换成一个特殊文字,然后把一个回车的替换成空字符串,再把特殊文字替换回二个回车,搞定。
|
10
adrianzhang OP @june4 用 Word 是这么整理的。但是 Linux 下怎么干呢?
|
11
june4 39 天前 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) |
12
saranz 39 天前
这个不就是找到 \n \r 然后删除的事嘛,就是用 shell 都能办的事。
|
13
adrianzhang OP @june4 #11 谢谢!我试试看。
|
14
adrianzhang OP @saranz #12 不一定啊,也许有\n\n 等等各种情况。
|
15
LaTero 39 天前 via Android 1
把不是紧跟着标点符号的\n 删掉试试
|
16
adrianzhang OP @LaTero #15 是个挺好的思路。
|
17
caomu 39 天前 via Android 1
可以搜索一下 文本格式化工具 / text format ,有很多现成的工具
|
18
TigerK 39 天前
为什么不让神奇的 AI 替你整理呢?
|
19
adrianzhang OP @caomu #17 太好了!原来这个关键字。非常感谢!
|
20
adrianzhang OP @TigerK #18 因为需要批量处理,所以问 AI 也是问程序怎么写,可是我连关键字都不知道,17 楼刚给出来。
|
21
saranz 39 天前
@adrianzhang \n\n 不一样是等于\n 吗,反正都是要删除的。
|
22
adrianzhang OP @saranz #21 嗯,总之很乱,需要程序处理很多情况。
|
23
saranz 39 天前
@adrianzhang 万不离其中,最基本的单位就是 \n 。全部换成空值,不就是等于 0 吗。
|
24
adrianzhang OP @saranz 那怎么分段呢?看例子这样的,段间的分隔也是 n
|