Grep 查找以“结束”结尾的行+&引用;

Grep 查找以“结束”结尾的行+&引用;,grep,Grep,我无法形成一个grep正则表达式,它只能找到以+符号结尾的行。例如: 应该匹配-这是一个示例行+ 不应匹配-这是另一个带+in-between或这是另一个带+in-between并以+结尾的,请使用$指示行的结尾: grep '+$' file 例子 更新 如果我想显示最后只有+的行呢。即使 行是这样的,这是一行,在bw中是+的,在结尾是+。我 我不希望这一行匹配 然后您可以使用awk: awk '/\+$/ && split($0, a, "\+")==2' file 解释

我无法形成一个grep正则表达式,它只能找到以+符号结尾的行。例如:

应该匹配-
这是一个示例行+


不应匹配-
这是另一个带+in-between
这是另一个带+in-between并以+
结尾的,请使用
$
指示行的结尾:

grep '+$' file
例子 更新
如果我想显示最后只有+的行呢。即使 行是这样的,这是一行,在bw中是+的,在结尾是+。我 我不希望这一行匹配

然后您可以使用
awk

awk '/\+$/ && split($0, a, "\+")==2' file
解释
  • /\+$/
    匹配以
    +
    结尾的行
  • split($0,a,“\+”)==2
    根据
    +
    分隔符将字符串分成块。返回值是个数,因此
    2
    表示它只包含一个
    +
例子
指定结尾
+
不应前面加任何其他
+
,或作为正则表达式:

grep '^[^+]*+'
在第二版
a
文件上测试时的输出:

This is a sample line +

谢谢,这很有效!我也在做同样的事情,但是在Windows创建的文件上,我复制了文件内容并创建了一个新文件,瞧!很高兴读到:)有时候在UNIX中使用Windows文件会导致奇怪的字符。如果是这样,您可以始终使用
dos2unix
命令来清理它们。如果我想显示最后只有+的行,该怎么办。即使一行是这样的
,这也是一行在bw中有+并且在结尾有+
。我不希望此行匹配。请参阅更新。另外,在发布第一个问题后,不要考虑更改需求。
grep '^[^+]*+'
This is a sample line +