ed コマンド: 行 1 から最初の空行まで削除

ed コマンド: 行 1 から最初の空行まで削除

教科書でこのコードを見ましたが、本では1,/^[ ]*$/d 「1行目から最初の空白行まで削除」を意味すると言いました。各文字の具体的な意味は何ですか?

ed $1 << EOF
    1,/^[ ]*$/d
    w
    q
EOF

ベストアンサー1

1,/.../最初の行から間のパターンに一致する行までの範囲を表します/

/^[ ]*$/[ ]*^行の先頭から最後まで、ゼロまたはスペースを含む行を見つけます。$
問題のコードが意図的なものなのか、本の正確なコピーなのかは不明です。単一のスペースの周りに括弧は必要ありません。おそらく、原作者は、文字クラスで置き換えることができる括弧の間にスペースとタブを望んでいたかもしれません[[:blank:]]

d行を削除するコマンドです。

wファイルの書き込み

qエディタの終了

このコマンドはed通過します。ここのドキュメント、で表されます<< EOF。この文字列は、下の他の4行とペアになっている半無意識の名前ですEOFEOF引用符がない場合は、EOF中間行のすべての変数が拡張されることを意味します。

ここで注意すべきもう1つのことは、例が引用されていないことです$1。 / scriptコマンドは、ed最初の位置引数(スクリプトまたは関数の引数)に対して実行されます。追加のスペース分割とファイル名の生成の影響を受ける。この主張は実際に引用されなければなりません。詳細については、次を参照してください。スペースやその他の特殊文字が原因でシェルスクリプトが停止するのはなぜですか?そしてbash / POSIXシェルで変数を引用することを忘れてしまうセキュリティリスク

おすすめ記事