2
我有一些變量:如何在shell中將變量解析爲sed命令?
$begin=10
$end=20
如何將它們傳遞給sed
命令。
sed -n '$begin,$endp' filename | grep word
sed -n '10,20p' filename | grep word
我有一些變量:如何在shell中將變量解析爲sed命令?
$begin=10
$end=20
如何將它們傳遞給sed
命令。
sed -n '$begin,$endp' filename | grep word
sed -n '10,20p' filename | grep word
這不起作用的原因是shell代碼中的單引號會阻止變量擴展。好的方法是使用AWK:
awk -v begin="$begin" -v end="$end" 'NR == begin, NR == end' filename
這是可能用,如果你使用雙引號(其中shell變量被擴展)的sed:
sed -n "$begin,$end p" filename
然而,這是受代碼因爲sed無法通過這種方式區分代碼和數據(與上面的awk代碼不同)。如果用戶設置,例如end="20 e rm -Rf /;"
,可能會發生不愉快的事情。
你可以把grep邏輯放在sed中:try'sed -n「$ begin,$ end {/ word/p}」file' – Kent
[sed腳本中的shell變量](http:// stackoverflow。 COM /問題/ 7006910 /殼變量 - 在-SID腳本) – NeronLeVelu