이 문자열에서 선행 텍스트를 제거하는 방법

이 문자열에서 선행 텍스트를 제거하는 방법

이 줄에서 숫자 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

도움이 되길 바랍니다

건배

관련 정보