(已解决)如何使用 sed 将模式添加到现有模式

问题描述 投票:0回答:2

我正在尝试添加“pp”。 ' 到以下分页,但它不起作用:

grep -n -o -E --color "\b(pp.\s)?\d{1,3}–\d{2,3}\b" references.txt 
3:pp. 610–623
5:102–114
8:58–70
10:245–258
12:99–120
13:70–86
16:172–195
18:389–399
25:1–13
27:104–117
29:503–516
38:501–507
40:1–14
42:450–470
46:759–785
49:1–14
53:50–62
56:1–17
59:1–17

第一页(第610-623页)已经按正文写好,其他页码应该这样写。

这里是使用的命令:

sed -E "s/(\b(pp.\s)?\d{1,3}–\d{2,3}\b)/(pp. )\1/g" references.txt

参考文献.txt 示例:

参考文献 Bender, E.、Gebru, T.、McMillan-Major, A. 和 Shmitchel, S. (2021)。关于随机鹦鹉的危险:语言模型会太大吗?在 2021 年会议记录中 ACM 公平、问责和透明度会议(第 610-623 页)。 Casal, J. E. 和 Yoon, J (2023)。第二语言写作教学中基于框架的公式化特征:学术写作中的变体、功能和学生感知。英语为 特定目的,71, 102–114。 https://doi.org/10.1016/j.esp.2023.03.004 De Costa, P.、Lee, J.、Rawal, H. 和 Li, W. (2021)。应用语言学伦理学。 J. McKinley 和 H. Rose(主编),劳特利奇应用研究方法手册 语言学。劳特利奇。 De Costa, P. I.、Sterling, S.、Lee, J.、Li, W. 和 Rawal, H. (2021)。应用语言学伦理学的研究任务。语言教学,54(1),58–70。 https://doi.org/ 10.1017/S0261444820000257 Gass, S.、Loewen, S. 和 Plonsky, L. (2021)。成熟:定量 SLA 研究的过去、现在和未来。语言教学,54(2),245–258。 https://doi. 组织/10.1017/S0261444819000430 哈根多夫,T.(2020)。人工智能的伦理:指南评估。思想与机器,30, 99–120。 https://doi.org/10.1007/s11023-020-09517-8 Halleck, G. B. 和 Connor, U. M. (2006)。 TESOL 会议提案中的言辞变动。学术英语杂志,5,70-86。 https://doi.org/10.1016/ j.jeap.2005.08.001

文字没有任何修改,也没有任何错误。

bash macos sed substitution
2个回答
1
投票

你的正则表达式是错误的。这应该有效:

sed -E "s/:(pp\. )?(.*)/:pp. \2/g" references.txt

如果您想就地更改文件,您也应该添加

-i
标志:

sed -i -E "s/:(pp\. )?(.*)/:pp. \2/g" references.txt

此外,第一个可选捕获组

(pp\. )?
的存在只是因为您说第一行已经有分页,所以我认为其他行也可能有它。如果您手动添加它并且没有行有分页,您也可以将其删除:

sed -E "s/:(.*)/:pp. \1/g" references.txt


0
投票
sed -E 's/\b([0-9]{1,3}–[0-9]{2,3})\b/pp. \1/g' references.txt

此命令将找到任何像“102–114”这样的分页并将其替换为“pp.102–114”。

:断言单词边界处的位置。

([0-9]{1,3}–[0-9]{2,3}):捕获分页模式。

:指第一个捕获组。

© www.soinside.com 2019 - 2024. All rights reserved.