다음 파일이 있는데 모두 축소된 JavaScript 코드가 포함되어 있습니다. 각 파일은 주석으로 끝납니다.
폴더 구조
|--static
|--js
|--1.1001bbaf.chunk.js
|--runtime~main.229c360f.js
|--main.57f2973b.chunk.js
1.1001bbaf.chunk.js
(window.webpackJsonp=window.webpackJsonp||[]).push .....
//# sourceMappingURL=1.1001bbaf.chunk.js.map
런타임~main.229c360f.js
!function(e){function r(r){for .....
//# sourceMappingURL=runtime~main.229c360f.js.map
main.57f2973b.chunk.js
(window.webpackJsonp=window.webpackJsonp||[]).push .....
//# sourceMappingURL=main.57f2973b.chunk.js.map
내 요구 사항은 모든 파일의 내용을 단일 파일로 플러시하여 main.js
내용을 덮어쓰는 대신 추가하는 것입니다.
다음 솔루션을 시도했습니다.
cat static/js/*.js >> main.js
이것은 훌륭하게 작동하지만 두 번째 파일의 내용을 첫 번째 파일 끝에 추가하고 주석으로 끝납니다. 이 같은:
//#sourceMappingURL=1.1001bbaf.chunk.js.map(window.webpackJsonp=window.webpackJsonp||[]).push .....
이제 전체 줄은 vim 텍스트 편집기의 주석이고 해당 줄에서 시작하는 모든 내용은 Atom 텍스트 편집기의 주석입니다.
내 Vim 텍스트 편집기의 기본 동작은 o
명령 모드에서 키를 누르고 마지막 줄이 주석이면 //...
새 줄이 시작된다는 것입니다 //
.
주석 줄로 끝나는 파일을 처리하는 방법을 모르겠습니다. 다음과 같이 생각할 수 있습니다. 새 줄에서 시작하는 다음 파일의 내용을 추가하거나 마지막 주석 줄을 제거합니다.
제한사항만 사용할 수 있습니다 bash
.
답변1
파일의 마지막 줄이 개행 문자로 끝나지 않는 것 같습니다. 그렇기 때문에 한 파일의 마지막 줄이 다음 파일의 첫 번째 줄과 병합됩니다.
각 파일 뒤에 줄바꿈을 추가해 볼 수 있습니다.
for file in static/js/*.js
do
cat "$file"
echo
done >> main.js
스크립트는 파일이 개행 문자로 끝나는지 확인하지 않습니다. 파일이 개행 문자로 끝나면 그 뒤에 빈 줄이 옵니다.
답변2
조금 이상하게 들릴 수도 있지만 파일이 1로 끝나지 않는 경우 sed
에만 파일 사이에 문자를 추가하는 동작을 활용할 수 있습니다.<newline>
sed ';' static/js/*.js >main.js
GNU에서도 작동할 것입니다 sed
. 다른 구현에 대해서는 잘 모르겠습니다.
예:
$ printf '%s' line1 >file1
$ printf '%s\n' line2 >file2
$ printf '%s' line3 >file3
$ cat file*
line1line2
line3
$ sed ';' file*
line1
line2
line3
이런 일이 일어나는 이유는,GNU sed
문서 인용:
실제로 sed가 종료 줄 바꿈 없이 줄을 인쇄하는 경우 동일한 출력 스트림에 다시 텍스트가 전송되면 여전히 누락된 줄 바꿈을 인쇄하므로 다음과 같은 내용이 나오지 않더라도 "기대하지 않는 놀라움"을 제공합니다. 'sed -n p' 명령은 cat과 완전히 동일합니다.
위 명령은 다음과 같은 결과를 제공합니다.
for file in static/js/*.js; do
cat "$file"
# Dump the last byte of each file and check if it is a
# newline (hex encoding 0a); print a newline if it is not
[ '0a' = "$(tail -c 1 "$file" | od -A n -t x1 | tr -d ' ')" ] || printf '\n'
done > main.js
마지막 줄을 제외하고, 누락된 경우 a는 마지막 파일에 추가되지 sed ';'
않지만 이 루프는 추가됩니다.<newline>