Ed

ed 命令:從第 1 行刪除到第一個空行

  • June 7, 2019

我從教科書上看到了這段程式碼;這本書只說這1,/^[ ]*$/d 意味著“從第 1 行刪除,直到第一個空白行”。每個字元的具體含義是什麼?

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

1,/.../表示從第一行到與 . 之間的模式匹配的行的範圍/

/^[ ]*$/``[ ]*匹配從行首到行^尾包含 0 或任意數量的空格$的行。

目前尚不清楚問題中的程式碼是否是故意的,以及它是否是書中的精確副本。單個空格周圍的括號不是必需的。也許原作者想在括號之間有一個空格和一個製表符,可以用字元類替換[[:blank:]]

d是刪除行的命令

w寫文件

q退出編輯器

這些命令ed通過此處的文件發送到,由<< EOF. 該EOF字元串是與其他EOF四行配對的半任意名稱。不加EOF引號意味著中間行中的任何變數都將被擴展。

這裡要注意的另一件事是範例的 unquoted $1。命令/腳本將ed針對第一個位置參數(腳本或函式的參數)執行進一步的空格分割和文件名生成。這個論點確實應該被引用。如需進一步閱讀,請參閱為什麼我的 shell 腳本會因空格或其他特殊字元而窒息?忘記在 bash/POSIX shells 中引用變數的安全隱患

引用自:https://unix.stackexchange.com/questions/523324