使用自定义正则表达式分隔符查找包含模式的行号

jas*_*siu 9 sed text-processing

作为例子,我试图让其中包含了模式行号。我的模式包含斜杠,所以我想添加自定义分隔符。

这个简单的工作:

sed -n '/file/=' temp.txt
Run Code Online (Sandbox Code Playgroud)

使用分隔符进行字符串替换也有效:

sed 's|file|gile|' temp.txt
Run Code Online (Sandbox Code Playgroud)

但是当我想向第一个示例添加分隔符时,它不会:

sed -n '|file /etc|=' temp.txt
Run Code Online (Sandbox Code Playgroud)

我知道我可以转义斜杠,但我更愿意添加自定义分隔符。知道如何修复我的命令吗?

ter*_*don 12

Stéphane为您提供sed解决方案:

sed -n  '\|file /etc|=' file 
Run Code Online (Sandbox Code Playgroud)

如果您愿意使用其他工具,您也可以这样做

grep -n 'file /etc' file
Run Code Online (Sandbox Code Playgroud)

这也将打印行本身,以单独获取行号尝试:

grep -n 'file /etc' file | cut -d: -f 1
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用perl

perl -lne 'm|file /etc| && print $.' file 
Run Code Online (Sandbox Code Playgroud)

或者awk

awk '$0 ~ "file /etc" {print NR}'
Run Code Online (Sandbox Code Playgroud)