标签: regular-expression

为什么在这种简单的情况下 sed 不贪婪?

$echo "foo 65 bar" | sed -n -e 's/.*\([0-9]\+\).*/\1/p'
5
Run Code Online (Sandbox Code Playgroud)

为什么输出不是65?sed 不应该贪婪地匹配[0-9]\+部分吗?我如何告诉 sed 匹配所有的65

sed regular-expression

11
推荐指数
1
解决办法
4622
查看次数

删除以#开头的行

#鉴于 的左侧和右侧可能有空格,如何删除以 a 开头的行#

  # Master socket provides access to userdb information. It's typically
Run Code Online (Sandbox Code Playgroud)

sed awk perl text-processing regular-expression

11
推荐指数
2
解决办法
3493
查看次数

在 bash 中的 if 子句中使用正则表达式

看看这个 if 块:

#!/bin/bash

str="m.m"
if [[ "${str}" =~ "m\.m" ]]; then
    echo "matched"
else
    echo "not matched"
    exit 1
fi

exit 0
Run Code Online (Sandbox Code Playgroud)

这应该打印“匹配”,但它没有。我哪里错了?

bash regular-expression

11
推荐指数
1
解决办法
5万
查看次数

如何根据连续两行的内容 grep 目录?

如何 grep包含“Foo”的行的目录,但在下一行还包含“Bar”时才获得匹配项?

grep regular-expression

11
推荐指数
3
解决办法
2129
查看次数

Bash 中的正则表达式问题:[^negate] 似乎不起作用

当我ls /directory | grep '[^term]'在 Bash 中执行时,我会得到一个常规列表,就好像该grep命令以某种方式被忽略了一样。我尝试了同样的事情egrep,我尝试将它与双引号和单引号一起使用,但没有更好的结果。当我尝试时,ls /directory | grep '^[term]我得到了以 term 开头的所有条目 - 正如预期的那样。

我已经在一个在线编辑器中尝试过这个命令,我可以在那里测试我的正则表达式并且它可以正常工作。但不是在 Bash 中。所以它在模拟中有效,但在现实生活中无效。

我在 Crunchbang Linux 10 上工作。我希望这是足够的信息,并期待每一个提示,因为未能在如此基本的级别上执行并浪费数小时的时间真的令人沮丧!

linux grep bash regular-expression crunchbang

11
推荐指数
1
解决办法
4万
查看次数

用于在 Bash 中查找双字符的正则表达式

我正在寻找一个正则表达式,它可以在命令行 (Bash) 上查找文本、列表等中所有出现的双字符。

主要问题:有没有一种简单的方法来查找像aallttttt等这样的序列,其中定义了一个正则表达式来查找相同字符的 n 次出现?我正在寻找的是在非常非常基本的水平上实现这一目标。在命令行上。在 Linux Shell 中。

经过相当多的研究,我得出了以下答案——以及由此产生的问题,因此他们只是给了我一个可能的解决方案的提示。但:

a) (e)grep 和反斜杠问题

  • grep 'a\{2\}' 寻找 aa
  • egrep'a{2}' 寻找 aa

问题:设置反冲的必要性真的与我使用的命令有关吗?如果是这样,任何人都可以提示我在此处使用 (e)grep 时还需要考虑什么吗?

b) 我在这里为我的问题找到了这个答案,尽管这不是我想要的:

grep -E '(.)\1' filename查找具有相同字符出现多次但不询问频率的条目。这与我正在寻找的很接近,但我仍然想设置一些重复。

我可能应该把它分成两个或更多的问题,但是我不想在这里淹没这个很棒的网站。

PS:另一个问题,可能离题了,但是:是in, inside,at还是on the shell. 并且on the command line正确吗?

linux command-line grep bash regular-expression

11
推荐指数
2
解决办法
5万
查看次数

tr 可以使用正则表达式吗?

我有一个这样的文件:

AAAA  
BBBB  
CCCC   
DDDD   
etc  
Run Code Online (Sandbox Code Playgroud)

在单独的行中的单词。我想使用tr.
所以我尝试了以下方法:

1)在每个单词的开头添加引号,即 'AAAA

  • tr '^\w$' '\'\w$' <file.txt 不起作用
  • tr '^\w$' ''\w$' <file.txt 不起作用

以上两者都使命令行卡住。

2)要在最后添加引号,我试过:

tr '\n' ''\n' <file.txt 但这不起作用,命令行卡住了。

为什么这些正则表达式不适用tr

linux regular-expression tr

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

替换除最后 x 次之外的字符

我有一个文件,其中包含一堆与 IP 相关的主机名,如下所示:

x-cluster-front-1 192.168.1.2
x-cluster-front-2 192.158.1.10
y-cluster-back-1 10.1.11.99
y-cluster-back-2 10.1.157.38
int.test.example.com 59.2.86.3
super.awesome.machine 123.234.15.6
Run Code Online (Sandbox Code Playgroud)

我希望它看起来像这样:

x-cluster-front-1 192.168.1.2
x-cluster-front-2 192.158.1.10
y-cluster-back-1 10.1.11.99
y-cluster-back-2 10.1.157.38
int-test-example-com 59.2.86.3
super-awesome-machine 123.234.15.6
Run Code Online (Sandbox Code Playgroud)

我该如何更换 . (点)从第一列带 - (连字符)以便于按第二列排序?我正在考虑使用 sed 替换点直到第一个空格,或者替换除最后三个之外的每个点,但我无法理解正则表达式和 sed。我可以执行简单的替换,但这超出了我的能力范围!

这是我用 bash 编写的一个更大脚本的一部分。我被困在这部分。

sed text-processing regular-expression

11
推荐指数
2
解决办法
6800
查看次数

Grep 所有不以数字开头的字符串

我正在寻找 grep 来显示所有不以数字开头的字符。我做了这样的事情:

grep -v '^[1-2]*[a-zA-Z]?' -o
Run Code Online (Sandbox Code Playgroud)

但它不起作用。你对一些reg exp有什么想法吗?

grep regular-expression

11
推荐指数
1
解决办法
5万
查看次数

如何将字符串的一部分提取到变量中?

我有这样的文件中的一行:

attempting to create a 512^3 level (with Dirichlet BC) using a 16^3 grid of 32^3 boxes and 800 tasks...
Run Code Online (Sandbox Code Playgroud)

我想提取的512^316^332^3800从它的四个数字分别为它们分配到四个变量levelgridboxestasks用于其他用途。

我怎样才能做到这一点?

bash string regular-expression

11
推荐指数
1
解决办法
9477
查看次数