필드 구분 기호 ":"부터 줄 끝까지 인쇄하는 방법
예:
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
무시합니다 .: