【发布时间】:2020-08-16 22:33:16
【问题描述】:
我对 perl 很陌生,目前我正在使用一个非常简单的 perl 正则表达式来打印从文件 1.txt 读取的字符串“Lecture”之后的行的最后一部分。。
cat 1.txt | perl -ne 'print "$1 \n" while /Lecture\s+(\d+\w)/g;'
效果很好,但我需要为其添加一个简单的条件:
First Preference 总是打印字符串“Lecture”之后的字符。 如果在一行中找不到字符串“Lecture”,只需打印行尾的字符即可。
PS:可能会出现字符串“Lecture”周围没有空格,并且我始终使用单词字符,因为它不一定是纯数字,它可以是字母数字。
示例
猫1.txt
Some Topic 1 Lecture 001
Some Topic 2 Lecture 002
Topic 3 ( classroom Session ) Lecture2B
Practicals 07A
Submissions 10
Topic5Lecture4
预期输出:
001
002
2B
07A
10
4
我最好想要一个可以直接在 cli/console 中运行的解决方案。 (就像我的原始代码一样 - cat 1.txt | perl code)。
我不想执行单独的 .pl 文件。
【问题讨论】:
-
预期输出与描述不匹配“如果在一行中找不到字符串“Lecture”,只需在行尾打印字符。”,因为三个字符“07A”应该是单个字符“A”。这使您的问题不清楚。
-
@Yunnosch 很抱歉造成混乱,应该打印字符起始编号的实例
-
我不明白“字符起始编号的非常实例”。也许“数字后跟一个字母”?但这不匹配,例如“001”。
-
你认为你的问题的细节可能更一致地被你的家庭作业描述吗?在这种情况下,请直接在此处将其作为文本引用,而不是试图总结/改写。
-
我根据我的理解编辑了您的问题。请仔细检查。我不想破坏它。
标签: perl