如何在Cygwin中使用正则表达式查找和替换

时间:2017-10-08 18:18:01

标签: regex replace cygwin

我正在尝试找到一个'r'后面跟一个辅音并将其删除在文本文件1.txt中。我的代码如下

cat 1.txt | grep s/.*r([^aeiou])/\1/g

我知道grep命令与Cygwin中的正则表达式一起使用,但我无法做到这一点。

3 个答案:

答案 0 :(得分:0)

NestedScrollView只能在输入文件中找到所需的正则表达式模式。如果要通过删除这些事件来编辑文件,最好使用grep

如果您的文件名为sed,请尝试以下操作:

ab

答案 1 :(得分:0)

删除'r'?删除辅音?删除线?请澄清“删除它”。

如果您在文档中某处[^aeiou],我建议您将[bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ]替换为.*r[A-Z0-9]

在这里,我将其拆分为三个查询,您可以使用\ 1 \ 2 \ 3:

将任何文本带回来。

sed 's/\(.*\)\(r\)\([^aeiou]\)/\1\2\3/g' 1.txt

使用SED删除

'r':sed 's/\(.*\)\(r\)\([^aeiou]\)/\1\3/g' 1.txt

使用SED删除

。* r:sed 's/\(.*\)\(r\)\([^aeiou]\)/\3/g' 1.txt

使用SED删除辅音:sed 's/\(.*\)\(r\)\([^aeiou]\)/\1\2/g' 1.txt

使用SED删除[^ aeiou]:sed 's/\(.*\)\(r\)\([^aeiou]\)/\1/g' 1.txt

行删除

使用sed:sed '/r[^aeiouAEIOU]/d' 1.txt

或以下,如果您有包含数字或符号的行:

sed '/r[bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ]/d' 1.txt

使用grep删除行: cat 1.txt | grep r[aeiouAEIOU]

或以下,如果您有包含数字或符号的行:

cat 1.txt | grep -v r[bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ]

答案 2 :(得分:0)

您使用了错误的工具,因为grep(1)仅过滤输入的输入行,您需要sed(1)来编辑[rR][bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ]恰好发生的位置。

sed 's/[rR]\([bcdfghijklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ]\)/\1/g'

将仅删除第一个rR。如果您需要删除两者,只需执行

sed 's/[rR][bcdfghijklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ]//g'