이 줄에서 숫자 41까지, 숫자 41까지 모든 문자를 삭제하는 방법
##SHUTDOWN_MAINT##41 * * * * /vend/oracle/util/bin
답변1
41
이것이 출력에 포함되기를 원하는지 확실하지 않습니다 . 여기에 두 가지 옵션 세트가 있습니다.
1. 최대 텍스트 삭제41
실행 중인 경우 bash
내장된 변수 처리를 사용할 수 있습니다.
line='##SHUTDOWN_MAINT##41 * * * * /vend/oracle/util/bin'
printf "%s\n" "${line#*41}"
다른 것이 없다고 보장할 수 있다면 41
다음을 사용할 수 있습니다.sed
line='##SHUTDOWN_MAINT##41 * * * * /vend/oracle/util/bin'
printf "%s\n" "$line" | sed 's/^.*41//'
GNU가 있는 경우 grep
아래의 모든 항목을 선택할 수 있습니다.41
line='##SHUTDOWN_MAINT##41 * * * * /vend/oracle/util/bin'
printf "%s\n" "$line" | grep -Po '(?<=41).*'
2. 까지의 텍스트를 삭제하고 태그로 41
사용하세요.##
실행 중인 경우 bash
내장된 변수 처리를 사용할 수 있습니다.
line='##SHUTDOWN_MAINT##41 * * * * /vend/oracle/util/bin'
printf "%s\n" "${line#*?##}"
다른 것이 없다고 보장할 수 있다면 ##
다음을 사용할 수 있습니다.sed
line='##SHUTDOWN_MAINT##41 * * * * /vend/oracle/util/bin'
printf "%s\n" "$line" | sed 's/^..*##//'
GNU가 있는 경우 grep
아래의 모든 항목을 선택할 수 있습니다.##
line='##SHUTDOWN_MAINT##41 * * * * /vend/oracle/util/bin'
printf "%s\n" "$line" | grep -Po '(?<=.##).*'
답변2
sed를 사용하여 첫 번째 숫자까지 모든 것을 제거할 수 있습니다.
echo '##SHUTDOWN_MAINT##41 * * * * /vend/oracle/util/bin' | sed 's/[^0-9]*//'
파일에서 변경하려면 다음을 사용하십시오.
sed -i 's/[^0-9]*//' filename
도움이 되길 바랍니다
건배