标签: regular-expression

vim:在替换命令中使用搜索中的字符串

我经常使用 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)。

vim regular-expression

17
推荐指数
1
解决办法
1970
查看次数

grep:显示文件名一次,然后显示带有行号的上下文

我们的源代码中散布着错误代码。使用 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)

grep sed awk regular-expression

16
推荐指数
1
解决办法
2907
查看次数

Linux less pager(或vim)中的负面回顾/超前断言

我想在使用 .php 的日志中找到所有没有跟在 .php 后面的“索引”实例less/index(?!\.php)不起作用。这可能吗?less 和 vim 的正则表达式是什么(它们有区别吗?)。这些应用程序各自的正则表达式库无法做到这一点吗?

less vim regular-expression

16
推荐指数
2
解决办法
5290
查看次数

正确的正则表达式在 grep 中不起作用

我有这个正则表达式:

(?<=prefix).*$
Run Code Online (Sandbox Code Playgroud)

它返回字符串“前缀”之后的任何字符,并且在任何在线正则表达式引擎(例如https://regex101.com)上都可以正常工作。问题是当我在 bash 中使用该正则表达式时:

grep '(?<=prefix).*$' <<< prefixSTRING
Run Code Online (Sandbox Code Playgroud)

它不匹配任何东西。为什么该正则表达式不适用于 grep?

grep regular-expression

16
推荐指数
3
解决办法
7696
查看次数

如何仅使用grep打印第一个匹配项

我正在尝试 grep 用户名:

users | grep "^\b\w*\b" -P
Run Code Online (Sandbox Code Playgroud)

我怎样才能让它只显示第一场比赛grep

shell grep regular-expression

15
推荐指数
2
解决办法
9万
查看次数

.ssh/config 中的正则表达式

在工作中,我经常需要登录遵循通用命名方案的主机,例如qc01- qc12hc01-hc10等。所有这些都需要在我的笔记本电脑的.ssh/config. 当然,我可以使用主机qc*和条目hc*,但我想知道是否可以使用正则表达式?

ssh regular-expression

15
推荐指数
3
解决办法
2万
查看次数

对单词边界感到困惑

我一直在研究这个很多,但我仍然不清楚。这是什么字边界是什么意思?它有什么作用?

那么,例如,有人可以向我解释这个命令吗?

egrep '\b[A-Z]+\b' filename.sh
Run Code Online (Sandbox Code Playgroud)

grep regular-expression

15
推荐指数
1
解决办法
2万
查看次数

如何grep管道|

如何 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)

grep special-characters quoting regular-expression

15
推荐指数
2
解决办法
3万
查看次数

使用搜索和替换在 nano 中查找和替换“标签”

如何在 nano 中搜索和替换水平制表符?我一直在尝试[\t]正则表达式模式下使用,但这仅匹配每个出现的字符t

...只是一直在使用sed 's/\t//g' file哪个工作正常,但我仍然对nano解决方案感兴趣。

text-processing regular-expression nano

15
推荐指数
1
解决办法
2万
查看次数

替换每行中除最后一个字符以外的所有字符

我想替换出现的“|” 除了使用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)

sed regular-expression

15
推荐指数
4
解决办法
2650
查看次数