Ed
ed 命令:從第 1 行刪除到第一個空行
我從教科書上看到了這段程式碼;這本書只說這
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 中引用變數的安全隱患。