2 行を結合する必要があります。 そのうちの 1 行は、テキスト全体の例で前の行のポイント終了点になります。
line1:hello
line2:goodbye.
次のように変更する必要があります:
line1: hello goodbye.
この巨大なテキストの 3 行目 (3、6、9、12、15、18、21、... 行など、3 の倍数) を削除する必要があります。
これが私がやりたいことです。
最初のタスク:
すべての行をチェックする
ピリオドで終わる場合は
.
次の行に進みます。ピリオドで終わらない場合は、
.
次の行を現在の行に結合します。
各行には行番号ラベルがなく、通常の単語で始まります。
2番目のタスク
最初から3行目ごとにゴミなので削除する必要があります
3 番目の文が一部 2 行に分かれているため、最初のタスクも実行する必要があります。そのため、最初に 2 行に分かれている行を完全に結合してから、2 番目のタスクを実行する必要があります。
私はWindows 7を使用しています。Notepad++とUltraEditを使用できます
答え1
最初のタスクNotepad++ で正規表現の検索と置換を使用して実行します。
- 「検索」>「置換...」を開きます。
- 「検索対象:」として、
"([^\.])\r\n"
(引用符なしで) を入力します。- 正規表現の意味: 「.」以外の文字で終わる行を検索します。
- 注意: ドキュメントに Linux ファイル末尾がある場合は、「\r\n」ではなく「\n」のみを使用する必要があります。
- 「置換後の文字列:」として、
"\1 "
(引用符なしで)と入力します。「\1」の後のスペースも必ずコピーしてください。 - 「検索モード」として「正規表現」を選択します
- 「すべて置換」をクリック
入力:
hello
goodbye.
hello
hello
goodbye.
hello.
goodbye.
出力:
hello goodbye.
hello hello goodbye.
hello.
goodbye.
の2番目のタスクさらに長い正規表現でも実行できます:
- 「検索」>「置換...」を開きます。
- 「検索対象:」として、
"(([^\r\n]*\r\n){2})[^\r\n]*\r\n"
(引用符なしで) を入力します。- 正規表現の意味: 3 行のブロックを検索します。
- 注意: 繰り返しになりますが、ドキュメントに Linux ファイル末尾がある場合は、「\r\n」ではなく「\n」のみを使用する必要があります。
- 「置換後の文字列:」として、
"\1"
(引用符なしで)を入力します。 - 「検索モード」として「正規表現」を選択します
- 「すべて置換」をクリック
入力:
hello goodbye.
hello hello goodbye.
sdlfj sdgf.
hello.
goodbye.
(/%&/$&=)?)=´?&%.
goodbye goodbye.
bye.
sldfjsdökl.
hello.
出力:
hello goodbye.
hello hello goodbye.
hello.
goodbye.
goodbye goodbye.
bye.
hello.
注記:
どちらの例でも、末尾に空白がないものと想定しています。末尾に空白がある場合は、たとえば上記のように ("\s*$"
引用""
符なし) で正規表現を置き換えるなどして、最初に空白を削除する必要があります。