2017-10-08 36 views
-1

子音の後に「r」を見つけようとしていて、それをテキストファイル1.txtで削除しようとしています。私のコードは次のようになりますCygwinで正規表現を使用して検索と置換を行う方法

gregコマンドはCygwinの正規表現で使用されていますが、これはできません。

+0

あなたは 'grep'ではなく' sed'を使いたかったと思います。 'sed 'sを試してください。* \([^ aeiou] \)/ \ 1/g " –

+0

はsedでも使えません – Coddy

+0

サンプルテキストと置換後の出力を追加すると便利です。 – CoreyJJohnson

答えて

0

grepは、入力ファイルで必要な正規表現パターンのみを検出します。これらのオカレンスを削除してファイルを編集する場合は、sedを使用する方がよいでしょう。

ファイルがab呼び出された場合は、これを試してみてください。

sed -i .bkp 's/r[^aeiou]//g' ab 
+0

sedで正規表現を使用できますか? .bkpとは何ですか?ありがとう – Coddy

+1

このコマンドは元のファイル 'ab'の' ab.bkp'と呼ばれるバックアップファイルを作成します。 '-i'オプションは、バックアップファイルに与えたい拡張子を提供します。 –

+1

'r [^ aeiou]'は正規表現です。だから、 'sed'は正規表現を許します。 –

0

'r' を削除しますか?子音を削除しますか?行を削除しますか? 「削除」を明確にしてください。

.*r[A-Z0-9]が文書のどこかにある場合は、[^aeiou][bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ]に置き換えることをおすすめします。ここで

私は3件の問い合わせにこれを分けてきたし、あなたが\ 1 \ 2 \ 3で好きなもので何でも戻ってテキストをもたらすことができます:SEDを使用して

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

'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を使用して

の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]

以下、あなたは数字や記号を持つラインを持っている場合:grep(1)は出力のみに入力行をフィルタとして

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

0

あなたは、間違ったツールを持って、あなたはに、sed(1)を必要とします[rR][bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ]が発生する場所を編集します。

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

は最初のrまたはR消去されます。

sed 's/[rR][bcdfghijklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ]//g' 
関連する問題