フィールド区切り記号「:」から行末まで印刷するには?

フィールド区切り記号「:」から行末まで印刷するには?

フィールド区切り記号「:」から行末まで印刷する方法

例:

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行の先頭から最初のスペースまでの:すべての内容と最初のスペースを含む、その後のすべてのスペースが削除されます。

文字列がシェル変数に存在する$a場合

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

これはパラメータ拡張を使用して、${parameter#word}最初の項目までのすべての項目を削除します-。ダッシュが再挿入されますprintf。ほとんどの最新のシェルで実行されている場合は、外部ユーティリティを使用しません。

答え3

使用grep:

grep -Po ':\K.*' infile

このアサーションは、印刷前に表示される最初のコロンより前の内容をすべて\K無視します。:

関連情報