ここに同様の質問がありますが、それらのどれも私の問題とまったく一致しません。
sedを使用してファイルの最初の空行を削除する方法は?
私が持っていると仮定しましょう
a
b
c
そして私は欲しい
a
b
c
出力として。
答え1
sed
FAQを見るここ:
$ 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以降では、-u
GNUが一度に1バイトずつ入力を読み込み(一度に1行ずつ出力するように)、フラグを追加してsed
パイプの問題を取り除くことができます(パフォーマンスが低下しても)。パフォーマンス)。