我想从文件中提取给定标记之间的字符串,在我的例子中,它介于%。我已将下面的字符串以粗体突出显示。
内容:
更新 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 的答案非常完美!