仅匹配按数字顺序排列的数字

仅匹配按数字顺序排列的数字

我在 [.] 中输入了数字,表示我正在转录的原始印刷文档的页码。但是,文档在 [.] 中还包含其他与页码不对应的数字。

例如:

Lorem ipsum dolor sit amet,consectetur adipiscing elit。完成了一项直径选择。 Sed sit amet ipsum mauris。保护者在亨德雷特之前保护了那些没有与猎物连接在一起的猎物。痛苦和软弱。事实是,如果自由意志主义能够阻止马蒂斯的言论自由,那他就只能靠自己的力量去抵抗。如果不小心咬了东西,就会用剪刀把门剪断。 Donec ut libero sed arcu vehicula ultricies a non tortor。 Lorem ipsum dolor sit amet, consectetur adipiscing[267]精英。 Aenean ut gravida lorem。猫儿在坟墓里,永远在那里,悲伤地死去。 Pellentesque auctor nisi id magna consequat sagittis。 Curabitur dapibus enim sit amet elit pharetra tincidunt feugiat nisl imperdiet。自由落体式,直冲云霄。 Donec sed odio eros。 Donec viverra 我的心脏就在隆隆弧的下方。凭借天生的贵族和伟大的产妇,诞生了可笑的穆斯。在 rutrum accumsan ultricies 中。生命无痛,永不衰竭。

发酵活力永远存在。现在直径已到,生命已三叉戟已到。援助之手 ullamcorp ultricies。 Curabitur ornare,舌状体总是连接箭矢,除非直径很小,id[1]fringilla 并不像 mi 那样。不, ...我停下来,发现它已经发酵,然后凝固了。耳蜗闭合,耳蜗前庭受损。痛苦的直径,元素和前庭,端口和精英。 Curabitur venenatis pulvinar tellus gravida ornare。 Sed et erat faucibus nunc euismod ultricies ut id justo。非课程规定不予受理,否则,其他课程仅可另行通知。 Fusce venenatis facilisis lectus ac semper。 Aliquam 在 massa ipsum 处。纯正的必比登[2]convallis nulla ultrices ultricies。 Nullam aliquam,mi eu aliquam tincidunt,purus velit laoreet tortor,viverra pretium nisi quam vitae mi。 Fusce vel volutpat elit。南箭竹如是说。

暂停选择狮子,将其连接到时间,将其放置在相反的位置。艾蒂安·卢卡斯·波特蒂塔[1]lorem,sed suscipit est rutrum non。肺叶切除术总是会导致肺损伤。 Aenean commodo ultrices imperdiet。[3]前庭就像智人一样,只有智人才能看见。 Phasellus eget dolor sit amet ipsum dapibus condimentum vitae quis lectus。 Aliquam ut massa in turpis dapibus convallis。 Praesent elit lacus, vestibulum at malesuada et, ornare et est。Ut augue nunc, sodales ut euismod non, adipiscing vitae orci。 Mauris 只是放置了它。 Mauris 在极权主义中。 Quisque nec est eleifend nulla ultrices egestas quis ut quam。 Donec sollicitudin lectus a mauris pulvinar id aliquam urna cursus。 Cras quis ligula sem,vel elementum mi。 Phasellus non ullamcorper urna。[24]

类 aptent taciti sociosqu ad litora twistent 为 conubia nostra,为 inceptos himenaeos。在 euismod ultrices 中 facilisis。智人门前庭具有强大的催眠作用,可以催眠他人的欲望。 Proin quis dictum nisl。我像智人一样,拥有前庭。两种元素都具有弱点。大前庭前庭埃涅阿斯三柱门亨德雷里特大,[5]ac facilisis nulla hendrerit ut。 Sed non tortor sodales quam auctor elementum。 Donec hendrerit nunc eget elit pharetra pulvinar。暂停并暂停时间。 Aenean luctus,elit commodo laoreet commodo,justo nisi consequat massa,sed vulputate quam urna quis eros。已完成。

我想按顺序替换所有 [.]在 TeX 中,使用 来设置页码\marginpar{[.]},但忽略任何不连续的数字。

因此,我希望sed或者emacs另一个类似的实用程序能够匹配上面的例子,我在这里加粗的内容:

[267] [1] [2] [1] [3] [24] [5]

因此,我只想匹配按数字顺序排列的内容。

我怎样才能做到这一点?

答案1

awk当然可以做到这一点。例如,脚本subpar.awk

BEGIN   { 
    maxgap = ARGV[1]
    ARGV[1] = "-"
    count = 0 
    }

{   i = count + 1
    while (i <= count+maxgap) {
        n = sub("\\[" i "\\]","\\marginpar{[" i++ "]}")
        count += n
        }
    print
    }

... 可以将示例文本处理为awk -f subpar.awk 2 <lorem.txt,其中参数2是序列中允许的最大差异。sub()返回所进行的替换次数(0 或 1),因此count只有在行中进行替换时才会递增。此代码处理一行中有多个替换的情况。

相关内容