이 sed 명령은 터미널에 출력할 때 작동합니다.
for FILE in *.cs; do NEW_VERS="$(cat $FILE | awk '/%version:/{print $(NF-1)}')"; sed -e "/Revision.*/,/using/{/\/\/.[\*]*[\*]$/i \\/\/ $NEW_VERS 221203 berra tjing tjong." -e '}' $FILE; done
인라인 파일 업데이트에 "i"를 사용해 보았지만 작동하지 않습니다.
for FILE in *.cs; do NEW_VERS="$(cat $FILE | awk '/%version:/{print $(NF-1)}')"; sed -ie "/Revision.*/,/using/{/\/\/.[\*]*[\*]$/i \\/\/ $NEW_VERS 221203 berra tjing tjong." -e '}' $FILE; done
sed: -e expression #1, char 1: unexpected `}'
sed: -e expression #1, char 1: unexpected `}'
sed: -e expression #1, char 1: unexpected `}'
sed: -e expression #1, char 1: unexpected `}'
sed: -e expression #1, char 1: unexpected `}'
루프 내에서 파일을 인라인으로 업데이트하려면 어떤 명령을 변경해야 합니까?
할 수 있는 작업:
이 명령은 시작 패턴이 "Revision.*"이고 끝 패턴이 "using"인 블록을 찾습니다. 이 블록에서 "//****************"와 같은 줄을 찾아 위에 다음 줄을 추가합니다: $NEW_VERS 221203 berra tjing t Jong.
여기서 $NEW_VERS는 구문 분석된 버전입니다.
이 모든 것은 첫 번째 명령(터미널 출력)에서 작동합니다. 하지만 파일을 인라인으로 편집할 수 있기를 바랍니다.
감사해요