我经常使用 vim /search 命令来验证我的正则表达式(只是为了看看它匹配什么)。之后我通常使用:%s替换命令,在那里我使用搜索中的正则表达式作为要替换的字符串,例如我首先查找这样的字符串:
/TP-\(\d\{5\}\)-DD-\d\{3\}
Run Code Online (Sandbox Code Playgroud)
它与我想要的完全匹配,所以我进行了替换:
:%s/TP-\(\d\{5\}\)-DD-\d\{3\}/\1/g
Run Code Online (Sandbox Code Playgroud)
但是我必须在这里再次编写整个正则表达式。通常那个正则表达式要长得多,这就是我寻找解决方案的原因:
是否有任何现有的快捷方式或 vim 脚本可以将该搜索模式直接粘贴到替换命令中?
我在终端中使用 vim(没有 gvim)。
我们的源代码中散布着错误代码。使用 grep 很容易找到它们,但我想要一个find_code我可以执行的 bash 函数(例如find_code ####),它将提供以下几行的输出:
/home/user/path/to/source.c
85 imagine this is code
86 this is more code
87 {
88 nicely indented
89 errorCode = 1111
90 that's the line that matched!
91 ok this block is ending
92 }
93 }
Run Code Online (Sandbox Code Playgroud)
这是我目前所拥有的:
find_code()
{
# "= " included to avoid matching unrelated number series
# SRCDIR is environment variable, parent dir of all of projects
FILENAME= grep -r "= ${1}" ${SRCDIR}
echo ${FILENAME}
grep -A5 …Run Code Online (Sandbox Code Playgroud) 我想在使用 .php 的日志中找到所有没有跟在 .php 后面的“索引”实例less。 /index(?!\.php)不起作用。这可能吗?less 和 vim 的正则表达式是什么(它们有区别吗?)。这些应用程序各自的正则表达式库无法做到这一点吗?
我有这个正则表达式:
(?<=prefix).*$
Run Code Online (Sandbox Code Playgroud)
它返回字符串“前缀”之后的任何字符,并且在任何在线正则表达式引擎(例如https://regex101.com)上都可以正常工作。问题是当我在 bash 中使用该正则表达式时:
grep '(?<=prefix).*$' <<< prefixSTRING
Run Code Online (Sandbox Code Playgroud)
它不匹配任何东西。为什么该正则表达式不适用于 grep?
我正在尝试 grep 用户名:
users | grep "^\b\w*\b" -P
Run Code Online (Sandbox Code Playgroud)
我怎样才能让它只显示第一场比赛grep?
在工作中,我经常需要登录遵循通用命名方案的主机,例如qc01- qc12、hc01-hc10等。所有这些都需要在我的笔记本电脑的.ssh/config. 当然,我可以使用主机qc*和条目hc*,但我想知道是否可以使用正则表达式?
我一直在研究这个很多,但我仍然不清楚。这是什么字边界是什么意思?它有什么作用?
那么,例如,有人可以向我解释这个命令吗?
egrep '\b[A-Z]+\b' filename.sh
Run Code Online (Sandbox Code Playgroud) 如何 grep 包含管道字符|或字符的行>:
files content:
|this is test
where is >
this is none
Run Code Online (Sandbox Code Playgroud)
现在我需要使用 grep 命令
grep -iE "<some expression>" file_name
Run Code Online (Sandbox Code Playgroud)
输出:
|this is test
where is >
Run Code Online (Sandbox Code Playgroud) 如何在 nano 中搜索和替换水平制表符?我一直在尝试[\t]在正则表达式模式下使用,但这仅匹配每个出现的字符t?
...只是一直在使用sed 's/\t//g' file哪个工作正常,但我仍然对nano解决方案感兴趣。
我想替换出现的“|” 除了仅使用sed 的带有空格的文件每一行中的最后一行。我想避免这样做:
sed -e "s/[|]/ /1" -e "s/[|]/ /1" -e "s/[|]/ /1" -e "s/[|]/ /1" -e "s/[|]/ /1" -e "s/[|]/ /1" -e "s/[|]/ /1" mydata.txt
Run Code Online (Sandbox Code Playgroud)
文件输入:
FLD1 |SFK TK |FLD2 |FLD4 |FLD5 |- |20200515 |NNNN |406 RCO 301
FLD1 |SFK TK |FLD2 |FLD4 |FLD5 |- |20200515 |NNNN |0
FLD1 |SFK TK |FLD2 |FLD4 |FLD5 |- |20200515 |NNNN |0
Run Code Online (Sandbox Code Playgroud)
文件输出:
FLD1 SFK TK FLD2 FLD4 FLD5 - 20200515 NNNN |406 RCO 301
FLD1 SFK TK FLD2 …Run Code Online (Sandbox Code Playgroud)