如果前 10 个字符包含特定字符串,则使用 sed 打印文件中的行

如果前 10 个字符包含特定字符串,则使用 sed 打印文件中的行

我的 Ubuntu 机器上有以下文件:

文件.txt

http://example.com/https:/www.google.com
http://test.example.com
https://www.example.com
https://www.click.example.com
http://example.com
http://test.example.com
https://www.example.com/https:/www.google.com
https://www.click.example.com

我想要新文件中的输出:

新文件.txt

https://www.example.com
https://www.click.example.com
https://www.example.com/https:/www.google.com
https://www.click.example.com

我使用 sed 如下所示,但它在输出文件中包含包含以下内容的所有行https行中的任何位置。

sed -n '/https/p' file.txt > new_file.txt

我想将搜索限制为前 5 个字符:如果在前 5 个字符中找到https,则打印该行,否则跳过它。

谢谢。

答案1

sed默认使用基本正则表达式 ( BRE) 来搜索文本,因此您可以使用它的语法:

^

匹配模式空间开头的空字符串,即在扬抑符之后出现的内容必须出现在模式空间的开头。

所以,对你来说:

sed -n '/^https/p' file.txt > new_file.txt

或者使用grep

grep '^https' file.txt > new_file.txt

相关内容