[解決済み】bash/sedスクリプトを使用してテキストファイルの最初の行を削除するにはどうすればよいですか?
2022-03-23 14:58:02
質問
bashスクリプトを使用して、巨大なテキストファイルから最初の行を繰り返し削除する必要があります。
今現在、私は
sed -i -e "1d" $FILE
- が、削除を行うのに1分ほどかかってしまいます。
もっと効率的に実現する方法はないでしょうか?
どのように解決するのですか?
試す テール :
tail -n +2 "$FILE"
-n x
: ただ、最後の
x
の行を削除します。
tail -n 5
を実行すると、入力の最後の5行が表示されます。その
+
記号は、引数を反転させて
tail
は、最初の
x-1
の行になります。
tail -n +1
はファイル全体を表示します。
tail -n +2
最初の行を除くすべて、など。
GNU
tail
よりもはるかに高速です。
sed
.
tail
はBSDでも利用可能で
-n +2
フラグは、両方のツールで一貫しています。また
フリーBSD
または
OS X
をご覧ください。
BSDバージョンは
sed
とはいえ。どうやって管理してるんでしょうね。
tail
はファイルを一行ずつ読み込むだけでよいのに対して
sed
は、スクリプトの解釈や正規表現の適用など、かなり複雑な処理を行う。
注意: あなたは
# THIS WILL GIVE YOU AN EMPTY FILE!
tail -n +2 "$FILE" > "$FILE"
が、これでは
空ファイル
. その理由は、リダイレクト(
>
の前に発生します。
tail
がシェルによって呼び出されます。
-
シェルがファイルを切り捨てる
$FILE
-
の新しいプロセスを作成します。
tail
-
の標準出力をリダイレクトします。
tail
プロセスから$FILE
-
tail
は、今は空の$FILE
ファイル内の1行目を削除したい場合は、以下のようにします。
tail -n +2 "$FILE" > "$FILE.tmp" && mv "$FILE.tmp" "$FILE"
は
&&
は、問題があったときにファイルが上書きされないようにするためのものです。
関連
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで文字列をデリミターで分割するには?
-
[解決済み] Bashでコマンドライン引数を解析するには?
-
[解決済み] Bashでファイルの中身をループする
-
[解決済み] sedで改行をスペースに置き換えるには?
-
[解決済み] Bashスクリプトで、ある条件が発生したらスクリプト全体を終了させるにはどうしたらいいですか?
-
[解決済み] ファイルからn行目を取得するBashツール
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Bashのif条件で「unary operator expected」エラーが発生する。
-
[解決済み】SEDをワイルドカードで使用する場合
-
[解決済み] etc/profileでVISIBLE=NOWを設定するのはなぜですか?
-
[解決済み] Bashスクリプトで引数を反復処理する方法
-
[解決済み] ssh / リモートbashコマンドでシングルクォート文字をエスケープするにはどうすればよいですか?
-
[解決済み] プロジェクトからすべての .pyc ファイルを削除するにはどうすればよいですか?
-
[解決済み] ConcatenationとAppendの違いについて【終了しました
-
[解決済み] findコマンドと一緒に使用するとエラー 'rm: missing operand' が発生する。
-
[解決済み] Bashでファイルを最初のX行を飛ばして印刷する [重複] 。
-
[解決済み] sedがその場でファイルを編集