내 사이트 중 하나에서 URL을 변경한 후 문제가 발생했습니다. URL은 매우 길었고 나중에 .htacces를 통한 변경에도 불구하고 URL을 변경하기로 결정했습니다...
하나씩 수정하고 있어요. (URL이 1500개가 넘네요...)
나는 이것을 가지고있다:
Redirect 301 /noticies/festes-noticies/diania-roda-les-aixames-la-nit-de-nadal/
이는 다음과 같습니다:
Redirect 301 /noticies/festes-noticies/diania-roda-les-aixames-la-nit-de-nadal/ /diania-roda-les-aixames-la-nit-de-nadal/
/-----/
줄 끝에 있는 마지막 에는 공백이 있습니다.
sed나 다른 명령을 사용하여 이 작업을 쉽게 수행할 수 있는 방법이 있습니까?
답변1
사용 sed
:
< input_file sed -E 's#((/[^/]*){2})$#\1 \1#' > output_file
/[^/]*
슬래시가 없는 0개 이상의 문자가 뒤에 오는 슬래시와 일치합니다.(){2}
괄호 안에 표현식을 두 번 넣는 것을 의미합니다.$
줄의 끝과 일치합니다.- 외부는
()
내부 부품을\1
교체 부품으로 재활용할 수 있도록 해줍니다. #
편의상 이 대체에서는 슬래시가 아닌 다른 문자(예:)도 구분 기호로 사용됩니다. ERE를 활성화 합니다-E
.
답변2
필수 인가요 sed
?
awk -F/ '{printf "%s /%s/\n",$0,$(NF-1)}' old_file > new_file
리디렉션 라인에서만 작동하며 전체 파일을 다시 작성합니다.
awk -F/ '$1 ~ /Redirect/ {printf "%s /%s/\n",$0,$(NF-1); next ; } {print}' old_file > new_file
어디
-F/
/
awk에게 필드 구분 기호 로 사용하도록 지시$0
,$(NF-1)
마지막 필드 앞의 전체 줄입니다.$1 ~ /Redirect/
리디렉션이 있는 행 선택next
다음 줄로 이동{print}
암시적 인쇄 라인 불일치Redirect
편집: 원래 행이 후행으로 끝나는 경우 /
마지막 필드 앞에 있는 필드를 선택해야 합니다.
일부는 awk
그 자리에서 편집할 수 있습니다( awk -i
). 그러나 원본 파일을 유지하고 새 파일에 버전을 적용한 후 결과에 만족하면 이름을 바꾸는 것이 좋습니다.