行末の特定の文字で分割行を結合する

行末の特定の文字で分割行を結合する

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*$"引用""符なし) で正規表現を置き換えるなどして、最初に空白を削除する必要があります。

関連情報