如何仅获取以“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
代码。简单的解释是:使用grep
的m1
选项仅打印第一个匹配项并退出程序,然后在主程序中提及正则表达式以匹配从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”开头的文件中的第一行。后跟除数字以外的任何字符?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用正则表达式仅捕获具有特定格式的有效句子的第一个单词? [复制]
捕获从“ NE”开始的正则表达式,后跟61到71之间的任何一位或两位数字