用grep批量获取“<”和“>”里面的文字
Get the text inside "<" and ">" with grep in batch
我试图在“<”和“>”内的 file.txt 中 grep 一个词两天,但无法得到它。例如,我在 file.txt 中有类似的东西:
30993250 (<someone@mail.com> 2014-09-22 12:41:56 +0200 365)
它来自 git blame -L 365,+1 path\to\file.cpp-e
,我只想恢复里面的电子邮件。我正在尝试以下代码:
grep -oP '(?<=\<)\w+(?= \>)' ..\log\file.txt > ..\log\result.txt
和
grep -Po '(?<=\().*(?=\))' ..\log\file.txt > ..\log\result.txt
但是没有用,提示文件语法错误或找不到指定路径。我不明白,我尝试了很多组合,但没有任何效果...
我想说我在 Windows 下使用批处理。请问有人可以帮助我吗?
编辑: 我找到了一个使用 ASCII table 的解决方案:
grep -oP '["4].*["6]' ..\log\file.txt > ..\log\result.txt
但是像这样显示“<>”字符:
<someone@mail.com>
我怎样才能删除它?
谢谢
grep 将查找并显示 行 ,它不会从一行中删除任何内容。
但在您的情况下,您可以读取结果并删除 <>
个字符。
grep -oP '["4].*["6]' ..\log\file.txt > ..\log\result.txt
setlocal EnableDelayedExpansion
set /p line= < ..\log\result.txt
set "line=!line:<=!"
set "line=!line:>=!"
echo !line!
perl 模式 -P
允许向后看。注意 - 我正在为 Windows.
使用 GNU grep
grep -P -o "(?<=<)[^>]+(?=>)" ..\log\file.txt >..\log\result.txt
对于无法访问 grep 的 Windows 批处理用户(一些公司不允许第 3 方 exe 程序),您可以使用我的 JREPL.BAT - 纯脚本正则表达式 search/replace在 Windows.
上本地运行的实用程序
jrepl "<([^>]+)>" /jmatch /f ..\log\file.txt /o ..\log\result.txt
我试图在“<”和“>”内的 file.txt 中 grep 一个词两天,但无法得到它。例如,我在 file.txt 中有类似的东西:
30993250 (<someone@mail.com> 2014-09-22 12:41:56 +0200 365)
它来自 git blame -L 365,+1 path\to\file.cpp-e
,我只想恢复里面的电子邮件。我正在尝试以下代码:
grep -oP '(?<=\<)\w+(?= \>)' ..\log\file.txt > ..\log\result.txt
和
grep -Po '(?<=\().*(?=\))' ..\log\file.txt > ..\log\result.txt
但是没有用,提示文件语法错误或找不到指定路径。我不明白,我尝试了很多组合,但没有任何效果...
我想说我在 Windows 下使用批处理。请问有人可以帮助我吗?
编辑: 我找到了一个使用 ASCII table 的解决方案:
grep -oP '["4].*["6]' ..\log\file.txt > ..\log\result.txt
但是像这样显示“<>”字符:
<someone@mail.com>
我怎样才能删除它?
谢谢
grep 将查找并显示 行 ,它不会从一行中删除任何内容。
但在您的情况下,您可以读取结果并删除 <>
个字符。
grep -oP '["4].*["6]' ..\log\file.txt > ..\log\result.txt
setlocal EnableDelayedExpansion
set /p line= < ..\log\result.txt
set "line=!line:<=!"
set "line=!line:>=!"
echo !line!
perl 模式 -P
允许向后看。注意 - 我正在为 Windows.
grep -P -o "(?<=<)[^>]+(?=>)" ..\log\file.txt >..\log\result.txt
对于无法访问 grep 的 Windows 批处理用户(一些公司不允许第 3 方 exe 程序),您可以使用我的 JREPL.BAT - 纯脚本正则表达式 search/replace在 Windows.
上本地运行的实用程序jrepl "<([^>]+)>" /jmatch /f ..\log\file.txt /o ..\log\result.txt