다음과 같은 파일 이름 패턴을 가진 녹음이 여러 개 있습니다.
%year%month%day-%hour%minute%second__%phonenumber.amr
e.g.:
20190212-112007__+313206601234.amr
나는 다음을 얻기 위해 단어를 바꾸고 싶습니다:
%phonenumber_%day-%month-%year_%hour-%minute-%second.amr
e.g.:
+313206601234__12-02-2019_11-20-07.amr
이 유틸리티를 사용할 수 있다는 것은 알고 있지만 sed
그 구문은 고대 언어와 같아서 [0-9] and .
이를 대체하기 위해 두 가지를 사용하는 것이 혼란스럽습니다.
답변1
캡처된 숫자 그룹을 사용하고 원하는 이름을 얻으려는 위치에 그룹을 배치하는 것이 전부입니다.
sed -E 's/^([[:digit:]]{4})([[:digit:]]{2})([[:digit:]]{2})-([[:digit:]]{2})([[:digit:]]{2})([[:digit:]]{2})__(\+[[:digit:]]+)/\7__\3-\2-\1_\4-\5-\6/'
-E
ERE(확장 정규식) 활성화[[:digit:]]
로캘 인식 번호 일치{N}
N
앞의 토큰 수와 일치합니다 (예[[:digit:]]{2}
: 2자리와 일치). 이는 범위일 수도 있습니다(예:[[:digit:]]{2,4}
2~4자리와 일치).
예:
% sed -E 's/^([[:digit:]]{4})([[:digit:]]{2})([[:digit:]]{2})-([[:digit:]]{2})([[:digit:]]{2})([[:digit:]]{2})__(\+[[:digit:]]+)/\7__\3-\2-\1_\4-\5-\6/' <<<'20190212-112007__+313206601234.amr'
+313206601234__12-02-2019_11-20-07.amr