5

次の形式の行を出力するファイルがあります。

$XYZ blah blah blah
$XYZ something
$XYZ random data

"$XYZ" プレフィックスはすべての行で同じです。実際にはドル記号で始まり、行頭以外の場所で発生する可能性はほとんどありません。

このファイルを取得できる唯一の方法は、スクリーン キャプチャを使用することです。これにより、行が 80 文字で折り返されます。したがって、次のようになります (ラッピングが 80 より小さい数であると仮定した場合):

$XYZ blah bl
ah blah
$XYZ somethi
ng
$XYZ random 
data

そこからリアルなセリフを再現したい。それを行うプログラムを書くことはできますが、私がよく知らない Unix コマンドがあれば簡単にできるのではないかと考えています。何か案は?

前もって感謝します。

4

3 に答える 3

4

最初に、すべての行を 1 つの長い行に結合してから、次のように、行の開始となるはずの単語が表示される場所に改行を追加します。

tr -d '\n' < file | sed 's/XYZ/\nXYZ/g'
于 2012-10-25T14:25:28.127 に答える
1

perl

perl -pe 's/\n//g;s/XYZ\s+/\n$&/g' filename.txt
于 2012-10-25T14:23:23.403 に答える
1

このpasteコマンドは、まさにこの目的のためのものです。

paste -d "" - -

のように

echo '$XYZ blah bl
ah blah
$XYZ somethi
ng
$XYZ random 
data' | paste -d "" - -

出力

$XYZ blah blah blah
$XYZ something
$XYZ random data
于 2012-10-25T16:43:02.747 に答える