如何在Cygwin中使用正则表达式查找和替换
我试图找到一个后面跟着一个辅音的'r',并在文本文件1.txt中将其删除。我的代码如下如何在Cygwin中使用正则表达式查找和替换
cat 1.txt | grep s/.*r([^aeiou])/\1/g
我知道在Cygwin中使用grep命令与正则表达式,但我无法做到这一点。
grep
只会在输入文件中找到所需的正则表达式模式。如果要通过删除这些事件来编辑文件,最好使用sed
。
如果你的文件被称为ab
,试试这个:
sed -i .bkp 's/r[^aeiou]//g' ab
你能用sed使用正则表达式吗?什么是.bkp?谢谢 – Coddy
这个命令将创建一个名为'ab.bkp'的备份文件,它是原始文件'ab'的备份文件。 '-i'选项提供了您想要提供给备份文件的扩展名。 –
'r [^ aeiou]'是一个正则表达式。所以,是的,'sed'允许正则表达式。 –
删除 'R'?删除辅音?删除线?请说明“删除它”。
如果您在文档的某个位置有.*r[A-Z0-9]
,我建议您将更换为[^aeiou]
。
在这里,我拆到这三个查询,你可以把任何在文字后面你用\ 1 \ 2 \ 3,如:使用SED
sed 's/\(.*\)\(r\)\([^aeiou]\)/\1\2\3/g' 1.txt
'R' 去除:sed 's/\(.*\)\(r\)\([^aeiou]\)/\1\3/g' 1.txt
。
* R去除使用SED:sed 's/\(.*\)\(r\)\([^aeiou]\)/\3/g' 1.txt
辅音去除使用SED:sed 's/\(.*\)\(r\)\([^aeiou]\)/\1\2/g' 1.txt
- [R [^ 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]
你得到了错误的工具,如grep(1)
只过滤输入线路输出,你需要sed(1)
,以编辑[rR][bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ]
碰巧发生的地方。
sed 's/[rR]\([bcdfghijklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ]\)/\1/g'
将只擦除第一r
或R
。如果你需要擦除两者,只要做
sed 's/[rR][bcdfghijklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ]//g'
我想你想用'sed',而不是'grep'。试试'sed's /。* r \([^ aeiou] \)/ \ 1/g'' –
也不适用于sed – Coddy
如果您在替换后添加示例文本和所需的输出,这将有所帮助。 – CoreyJJohnson