如何从字段分隔符“:”打印到行尾
例子:
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
断言将忽略打印之前:
看到的第一个冒号之前的所有内容。