[解決済み] ファイルの先頭に付けるシェルワンプライナー
2022-06-22 14:19:11
質問
これはおそらく 複雑な解決策です。 .
私は">"のような単純な演算子を探しています、しかし前置のためです。
残念ながら、それは存在しません。次のようなことをしなければならないでしょう。
mv myfile tmp cat myheader tmp > myfile を実行します。
もっとスマートなものはないか?
どのように解決するのですか?
この ハック は、即席の回答で、うまくいき、多くのアップヴォートを得ました。その後、この質問が人気になり、時間が経つにつれて、怒った人々が「ちょっとはうまくいったけど、変なことが起きた」「全然うまくいかなかった」と報告し始め、一時期猛烈にダウンボートされました。 楽しいですね。
この解決策は、システム上のファイル記述子の正確な実装を利用するもので、実装は nix 間で大きく異なるため、その成功は完全にシステムに依存し、決定的に移植不可能であり、漠然とした重要なものであっても当てにすべきではありません。
さて、そのようなことはさておき、答えはこうでした。
ファイルに対して別のファイル記述子を作成する (
exec 3<> yourfile
) を作成し、そこに書き込む (
>&3
) に書き込むことで、同一ファイルの読み書きに関するジレンマが解消されるようです。私は600Kのファイルをawkで処理しました。しかし、'cat' を使って同じトリックを試すと失敗します。
前置詞を変数として awk に渡す (
-v TEXT="$text"
) に変数として渡すことで、'sed' でこのトリックを行うことを妨げるリテラルの引用符の問題を克服します。
#!/bin/bash
text="Hello world
What's up?"
exec 3<> yourfile && awk -v TEXT="$text" 'BEGIN {print TEXT}{print}' yourfile >&3
関連
-
シェルwhileループのエラー曖昧なリダイレクトとwhileループの変数割り当て失敗問題
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] シェルで、「2>&1」はどういう意味ですか?
-
[解決済み] ディレクトリが存在しない場合のみmkdirする方法は?
-
[解決済み] Bashシェルスクリプトの入力引数の存在確認
-
[解決済み] 整数の合計を1行に1つずつ表示するシェルコマンド?
-
[解決済み] 特定のファイル/フォルダを除外してディレクトリをtarするシェルコマンド
-
[解決済み] grep --exclude/--include構文を使って特定のファイルをgrepしないようにする
-
[解決済み】bashで1つのコマンドでシェル変数にデフォルト値を割り当てる。
-
[解決済み】シェルスクリプトにコマンドが存在するかどうかを確認するにはどうすればいいですか?重複
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
シェルエラーの解決:シンタックスエラー:予期しないファイルの終了
-
[解決済み] ファイル中のある文字列が出現する行番号を表示するには?
-
[解決済み] ファイル内検索と置換、ファイルの上書きがうまくいかず、ファイルが空になってしまう
-
[解決済み] シェルスクリプトでワイルドカードを使用してファイルが存在するかどうかを確認する【重複
-
[解決済み】/dev/null 2>&1とは何ですか?
-
[解決済み】シェルエイリアスにコマンドライン引数を渡すには?重複
-
[解決済み】ファイルの先頭にテキストを挿入する方法は?
-
[解決済み] パターンの前に改行を挿入するには?
-
[解決済み] バイナリデータを含むテキストファイルを grep するには?
-
[解決済み] sed 全単語検索と置換