最初の空行のみ削除 sed

最初の空行のみ削除 sed

ここに同様の質問がありますが、それらのどれも私の問題とまったく一致しません。

sedを使用してファイルの最初の空行を削除する方法は?

私が持っていると仮定しましょう

a

b

c

そして私は欲しい

a
b

c

出力として。

答え1

sedFAQを見るここ:

$ sed '0,/^$/{//d}' lines
a
b

c

d

使用する空白のある行を検討したい場合は、実際には空行のみが削除されます。

$ sed '0,/^[[:space:]]*$/{//d}' lines

代わりに。

答え2

sed次を使用して最初の空白行を読み取り、次を使用して残りの行catを読み取ることができます。これは大容量ファイルに最も効率的です。

{ sed -n '/./!q;p'; cat; } < the-file

ただし、通常のファイルでのみ機能します(パイプでは機能しません。データをチャンクとして読み込み、入力を取得できない場合はsed呼び出しの次の行が見つからないため)。q@peterphが指摘したように、GNUsedバージョン4.2.2以降では、-uGNUが一度に1バイトずつ入力を読み込み(一度に1行ずつ出力するように)、フラグを追加してsedパイプの問題を取り除くことができます(パフォーマンスが低下しても)。パフォーマンス)。

関連情報