次の行を含むテキストファイルがあります。
LIN This is the value which I need
from this line which has a very long line
SHR This1;This2;
This3;
GYC This is an extra.
出力は次のようになります。
LIN This is the value which I need from this line whi a very..
SHR This1;This2;This3;
GYC This is an extra.
sed
Pythonで実装する前に、まずこれを試しました。だから見つけました...
sed 's/ //' filename.txt
上記のコードスニペットは空の4 + 1スペース(常に固定)を削除する1つのことだけを行いますが、情報を抽出するために行をLINE&SHRTタグに移動する必要があるため、どのように進むべきかわかりません。また、ラベル行(LINE/SHRT/EKY/EKC/USERを使用)が続くと、追加の空白として表示されます。新しい行でなければならない場合は、次の行に進みます。
質問、sedを使用して1行を前の行に移動できますか?行が続くか終了するかを示すためにスペースを区別する方法
ベストアンサー1
作業を簡単にしてください。
sed 'H;1h;$!d;g;s/\n */ /g'
この短いスクリプトは、1 つ以上のスペースで始まるすべての行を前の行に連結します。
仕組み:H
各行を予約済みスペースに追加します。改行を避けるために、最初の行がコピーされます1h
。最後の行でない場合はd
削除し、またはを使用して予約済みスペースをパターンスペースに移動しますg
。ファイル全体がパターンスペースにあるので、s
コマンドはスペースがあるすべての改行を単一のスペースに置き換えます。
GNUを使用すると、sed
はるかに簡単になります。
sed -z 's/\n */ /g'