如何仅获取以“1”开头的文件中的第一行。后跟除数字以外的任何字符?

Posted

技术标签:

【中文标题】如何仅获取以“1”开头的文件中的第一行。后跟除数字以外的任何字符?【英文标题】:How can I get only the first line in a file that starts with "1." followed by any character except a number? 【发布时间】:2022-01-08 07:08:06 【问题描述】:

我有这个文件

1.1some text
2.some text
1.line I need

如何只打印文件中以“1”开头的第一行。后跟除数字以外的任何字符? 我希望这样:

1.line I need

我的代码是这样的

q=$(grep "^[0-9].[a-z]"  "file")
echo $q

谢谢

【问题讨论】:

如果只对以1 开头的行感兴趣,为什么要查找以any 数字([0-9]) 开头的行?未转义句点 (.) 充当单字符通配符,以查找要转义的明确句点 (\.) 或括在括号中 ([.]) 【参考方案1】:

使用您展示的示例,请尝试遵循grep 代码。简单的解释是:使用grepm1 选项仅打印第一个匹配项并退出程序,然后在主程序中提及正则表达式以匹配从1. 开始的行,后跟一个非数字字符,如果匹配是找到然后打印该行。

grep -m1 '^1\.[^0-9]'  Input_file

【讨论】:

【参考方案2】:

如何只打印以1.开头的文件中的第一行,后跟任何字符除了数字

使用sed,您可以使用:

sed '/^1\.[^0-9]/!d;q' file

1.line I need

详情:

-n: 禁止常规输出 /^1\.[^0-9]/:搜索以1 开头的行,后跟一个点和一个非数字 !d:删除所有不匹配的行 q:退出进一步处理

awk 中的类似解决方案是:

awk '/^1\.[^0-9]/print; exit' file

【讨论】:

以上是关于如何仅获取以“1”开头的文件中的第一行。后跟除数字以外的任何字符?的主要内容,如果未能解决你的问题,请参考以下文章

命令行:替换换行符后跟字符

如何使用正则表达式仅捕获具有特定格式的有效句子的第一个单词? [复制]

jQuery选择所有以“o”开头并后跟数字的元素

捕获从“ NE”开始的正则表达式,后跟61到71之间的任何一位或两位数字

如何使用模式匹配器仅获取与 Java 中正则表达式匹配的第一行?

为啥我的讲师编写的所有 C 文件的第一行都以单个 # 开头?