如何从字段分隔符“:”打印到行尾?

如何从字段分隔符“:”打印到行尾?

如何从字段分隔符“:”打印到行尾

例子:

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

答案1

我会用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-

答案2

通过它

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

sed替换将删除从行开头到第一个空格及其:后的所有空格(包括第一个空格)的所有内容。

如果 shell 变量中有该字符串,$a那么

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

这使用参数扩展${parameter#word}来删除直到并包括第一个 的所有内容-。破折号再次由 插入printf。在大多数现代 shell 中运行时,它不使用任何外部实用程序。

答案3

使用grep

grep -Po ':\K.*' infile

\K断言将忽略打印之前:看到的第一个冒号之前的所有内容。

相关内容