gpt4 book ai didi

regex - 复制与正则表达式匹配的文本

转载 作者:行者123 更新时间:2023-12-01 17:23:49 25 4
gpt4 key购买 nike

我有一个在文本文件中有多个匹配项的正则表达式。
我只想将匹配项复制到第二个文件中。我不想复制包含匹配项的行:我只想要匹配的文本。

我在 Notepad++ 中找不到这样做的方法(只复制完整的行,而不仅仅是匹配项)。也不在 Visual Studio 搜索中。

有没有办法只复制比赛?也许在 grepp 或 sed 中?

最佳答案

您可以同时使用两者。可以说我有以下文件-

示例文件:

[jaypal:~/Temp] cat myfile 
this is some random number 424-555
and my cell is 111-222-3333
and 42555 is my zip code

我想捕获 only numbers 来自 myfile

使用 sed :

sed您可以使用 -n 的组合和 p选项以及 grouped pattern .
sed -n 's/.[^0-9]*\([0-9-]\+\).*/\1/p'
| | | | | ||
--- ---------- -- |
| | | ---------> `p` prints only matched output. Since
V V V we are suppressing everything with -n
Suppress Escaped `(` \1 prints we use p to invoke printing.
output start the group first matched
you can reference group
it with \1. If you
have more grouped
pattern then they can
be called with \2 ...

测试:
[jaypal:~/Temp] sed -n 's/.[^0-9]*\([0-9-]\+\).*/\1/p' myfile 
424-555
111-222-3333
42555

您可以简单地将其重定向到另一个文件。

使用 grep :

您可以使用 -
egrep -o "regex" filename


grep -E -o "regex" filename

来自手册页:
-E, --extended-regexp
Interpret PATTERN as an extended regular expression (see below).

-o, --only-matching
Show only the part of a matching line that matches PATTERN.

测试:
[jaypal:~/Temp] egrep -o "[0-9-]+" myfile
424-555
111-222-3333
42555

您可以简单地将其重定向到另一个文件。

注意:显然这些是简单的例子,但它传达了这一点。

关于regex - 复制与正则表达式匹配的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8621199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com