sedを使用してテキストファイルのタイトルから重複文字を削除するにはどうすればよいですか?
NNAAMMEE
nice - run a program with modified scheduling priority
SSYYNNOOPPSSIISS
nice [-n adjustment] [-adjustment] [--adjustment=adjustment] [command [a$
上記は例です。解析された出力を次のようにsed
作成したいと思います。
NAME
nice - run a program with modified scheduling priority
SYNOPSIS
nice [-n adjustment] [-adjustment] [--adjustment=adjustment] [command [a$
ベストアンサー1
方法1
次のコマンドを使用してこれを実行できますsed
。
$ sed 's/\([A-Za-z]\)\1\+/\1/g' file.txt
はい
上記の入力例を使用してファイルを作成しましたsample.txt
。
$ sed 's/\([A-Za-z]\)\1\+/\1/g' sample.txt
NAME
nice - run a program with modified scheduling priority
SYNOPSIS
nice [-n adjustment] [-adjustment] [--adjustment=adjustment] [command [a$
方法#2
すべての重複文字を削除する方法もあります。
$ sed 's/\(.\)\1/\1/g' file.txt
はい
$ sed 's/\(.\)\1/\1/g' sample.txt
NAME
nice - run a program with modified scheduling priority
SYNOPSIS
nice [-n adjustment] [-adjustment] [-adjustment=adjustment] [command [a$
方法#3(大文字のみ可能)
OPは大文字だけを削除するように変更できるかどうか尋ねました。修正された方法#1を使用してこれを行う方法は次のとおりです。
はい
$ sed 's/\([A-Z]\)\1\+/\1/g' sample.txt
NAME
nice - run a program with modified scheduling priority
SYNOPSIS
nice [-n adjustment] [-adjustment] [--adjustment=adjustment] [command [a$
上記の方法の詳細な説明
すべての例では、文字セットAZまたはazの文字値が最初に見つかったときに保存される手法を使用しています。文字を囲む括弧は、sed
後で使用するために保存されることを意味します。その後、値は即時または後でアクセスできる一時変数に保存されます。これらの変数の名前は\ 1と\ 2です。
だから私たちが使用する秘訣は、最初の文字を一致させることです。
\([A-Za-z]\)
次に、保存した値を補助文字として使用します。この値は上記の最初の文字の直後に表示する必要があります。したがって、次のようになります。
\([A-Za-z]\)\1.
また、sed
検索と置換機能を活用しています。s/../../g
これはg
、私たちがこれを世界中で行っていることを意味します。
したがって、あるキャラクターに会って別のキャラクターに会ったら、それを交換して同じキャラクターに置き換えます。