ダッシュ (-) で始まる行を含むファイルを処理する必要があります。これらは、前の行に追加する必要がある継続行です。だから私が持っているのは次のようなものです:
Lorem ipsum dolor sit amet, consectetur
- adipiscing elit. Donec
- consectetur lotis.
Sed a est dui.
Curabitur placerat a tortor
- vel sodales.
そして私が欲しいのは:
Lorem ipsum dolor sit amet, consectetur - adipiscing elit. Donec - consectetur lotis.
Sed a est dui.
Curabitur placerat a tortor - vel sodales.
だから私はこのようなものを書いた:
$s = ""
cat $f |%{
if ($_ -match "^-") { $s += $_ } else { $s; $s = $_; }
} |out-file x.txt
私の質問は次のとおりです。ファイルが破線で終わる場合、スクリプトは最終行を出力しません。これは、パイプから最終行を受け取ったときに、それが最終行であることを認識していないためです。
Perl では、END {} のような構文を使用してこれらのことを行うことができました。それは Powershell でどのように処理されますか?
アップデート
Perl は適切です。なぜなら、その言語では次のようなことができるからです (txt
関連するテキストを含むファイルはどこにありますか):
perl -lne '
BEGIN { $s = "" };
if (/^-/) { $s .= $_ } else { print $s; $s = $_; }
END { print $s; }
' txt
ご覧のとおり、END{} コンストラクトが問題を解決します