Bash

如何從欄位分隔符“:”列印到行尾?

  • August 21, 2017

如何從欄位分隔符“:”列印到行尾

例子:

echo " llap_java_opts  :  -XX:+AlwaysPreTouch {% if java_version > 7 %}-XX:+UseG1GC -XX:TLABSize=8m -XX:+ResizeTLAB -XX:+UseNUMA -XX:+AggressiveOpts"

llap_java_opts  :  -XX:+AlwaysPreTouch {% if java_version > 7 %}-XX:+UseG1GC -XX:TLABSize=8m -XX:+ResizeTLAB -XX:+UseNUMA -XX:+AggressiveOpts

預期輸出:

-XX:+AlwaysPreTouch {% if java_version > 7 %}-XX:+UseG1GC -XX:TLABSize=8m -XX:+ResizeTLAB -XX:+UseNUMA -XX:+AggressiveOpts

我會用cut -d: -f2-這個:

echo " llap_java_opts  :  -XX:+AlwaysPreTouch {% if java_version > 7 %}-XX:+UseG1GC -XX:TLABSize=8m -XX:+ResizeTLAB -XX:+UseNUMA -XX:+AggressiveOpts" | cut -d: -f2-

通過它

sed 's/^[^:]*: *//'

sed替換將刪除從行首到並包括第一個:空格和之後的所有空格的所有內容。

如果您在 shell 變數中有字元串,$a那麼

printf -- '-%s\n' "${a#*-}"

這使用參數擴展${parameter#word}來刪除直到並包括第一個的所有內容-。破折號由 再次插入printf。在大多數現代 shell 中執行時,它不使用任何外部實用程序。

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