我正在嘗試洗掉 shell bash 腳本中檔案的最后三行。
我可用的命令是有限的,因為我不在 Linux 上,而是使用 MINGW64。 sed到目前為止做了一個創建作業,但是洗掉最后三行讓我在如何格式化運算式方面有些頭疼。
我使用wc來了解檔案有多少行,然后用expr減去三行。
n=$(wc -l < "$distribution_area")
rel=$(expr $n - 3)
洗掉行的起點是由rel定義的,但是通過 來訪問區域變數,不幸的是sed$的語法是使用來定義檔案的結尾。因此,$
sed -i "$rel,$d" "$distribution_area"
將不起作用,并且組合的任何變體例如'"'"$rel"'",$d'給了我sed: -e expression #1, char 1: unknown command: `"'或類似的東西。
有人可以告訴我如何將變數與sed$d的正則運算式語法結合起來嗎?
uj5u.com熱心網友回復:
sed -i "$rel,$d" "$distribution_area"
在這里,您缺少n第二個 arg 的變數名稱 ( )。
考慮以下關于test包含 1-10 的檔案的示例:
n=$(wc -l < test)
rel=$(($n - 3))
sed "$rel,$n d" test
結果:
1
2
3
4
5
6
為確保d不會干擾$n,您可以添加空格而不是轉義。
如果您最近head有可用的,我會推薦類似的東西:
head -n -3 test
uj5u.com熱心網友回復:
有人可以告訴我如何將變數與 sed 的 $d 正則運算式語法結合起來嗎?
$d擴展為 varibale d,你必須逃避它。
"$rel,\$d"
或者:
"$rel"',$d'
但我會使用:
head -n -3 "$distribution_area" > "$distribution_area".tmp
mv "$distribution_area".tmp "$distribution_area"
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/517580.html
標籤:重击sed
上一篇:為什么不能cd進入目標檔案夾?
下一篇:通過算術修改檔案行中的字串數字
