提取给定标记之间的字符串

提取给定标记之间的字符串

我想从文件中提取给定标记之间的字符串,在我的例子中,它介于。我已将下面的字符串以粗体突出显示。

内容:

更新 DIMENSIONPARAMETER 设置 TEXTVALUE='http://%arm.se 主机%:%arm.se.wls.监听端口%/CramerOSS/SyncEngineServlet/SyncProcessUnPauseServlet' 其中 NAME='SyncEngine SyncProcessUnPauseServlet';

它还有仅包含 %somestring% 的输入。我只想提取该字符串。

答案1

如果文件中的所有行都像示例一样构造,我相信您可以使用命令行程序cut将百分号视为字段分隔符并选择第 2第 4 个字段。因此尝试运行

cut -d "%" -f 2,4 --output-delimiter="," <file_name

更新:我认为其他格式不需要做任何更改,因为在模式中,%string%上面的命令将其string视为第二个字段并提取它。我尝试运行

echo "%string%" | cut -d "%" -f 2,4 --output-delimiter=","

string打印到标准输出。

答案2

使用grep你提到的"have %string% simply present"

grep -o '%[^%]*%' infile

答案3

尝试这个。

sed -r 's/[^%]*%([^%]*)%\S*(\s)*/\1\2/g'

使用 sed 可以轻松提取单个出现的情况。对于多次出现的情况,我之前曾发现过类似的问题。我找不到那个帖子。

好的,这可以正确检测第一次出现的情况,但不能正确检测第二次出现的情况。不起作用。

Karthik 的答案非常完美!

相关内容