相关疑难解决方法(0)

如何仅使用sed输出捕获的组?

有没有办法告诉sed输出只捕获的组?例如,给定输入:

This is a sample 123 text and some 987 numbers
Run Code Online (Sandbox Code Playgroud)

和模式:

/([\d]+)/
Run Code Online (Sandbox Code Playgroud)

我可以通过反向引用格式化的方式获得123和987输出吗?

regex sed

258
推荐指数
8
解决办法
38万
查看次数

Grep - 如何仅输出捕获组的内容

我试图找到一种方法让 grep 只输出捕获组的内容。例如,如果我有以下文件:

hello1, please match me
hello2, please do not match me
Run Code Online (Sandbox Code Playgroud)

我想

hello1, please match me
hello2, please do not match me
Run Code Online (Sandbox Code Playgroud)

输出hello1. 但是它输出hello1, please match me.

现在,我知道这grep -Po 'hello[0-9]+(?=, please match me)'可以解决问题,但我认为必须有一种方法可以简单地返回一个捕获组,但是我找不到任何信息(在网络上和 中man grep)。

是否有可能,或者捕获组仅用于反向引用?如果没有办法做到这一点,我会觉得很奇怪。

感谢您的时间,并随时批评这篇文章的构建方式!

bash shell grep

13
推荐指数
5
解决办法
7374
查看次数

使用sed在两个斜杠之间提取字符串

我正在尝试使用 sed 从文件中的一行中提取特定字符串。目前我正在使用 while 循环读取文件并搜索特定字符串。当找到该字符串时,我正在提取它,但是我需要使用 sed 来解析输出,以便我只获取两个斜杠之间的字符串(它是一个目录名,所以如果可能的话,我需要同时保留开头和结尾的斜杠)。这是我正在运行以搜索文件的循环:

#!/bin/sh
file=configFile.conf
while read line 
do
    if  echo "$line" | grep -q "directory_root" 
    then DIR_ROOT="$line"
fi
done < "$file"
echo $DIR_ROOT
exit 0
Run Code Online (Sandbox Code Playgroud)

while 循环起作用并回显以下字符串:

directory_root /root/config/data/
Run Code Online (Sandbox Code Playgroud)

然后我需要使用 sed 以获得以下输出,以便将正确的目录名称传递给另一个脚本:

/root/
Run Code Online (Sandbox Code Playgroud)

是否可以使用 sed 和正则表达式从回显输出中仅提取上述内容?

谢谢

regex bash shell text-processing sed

3
推荐指数
1
解决办法
3015
查看次数

标签 统计

bash ×2

regex ×2

sed ×2

shell ×2

grep ×1

text-processing ×1