random.txt
한 파일( )의 데이터를 폴더의 다른 파일 세트( ) 에 추가하고 싶습니다 .real.txt
예를 들어:
$ cat random
some text
$ cat real.txt
sample text
다음 명령을 실행하면:
$ sed i.old '1s;^;some text\n;' real.txt
$ cat real.txt
some text
sample text
이 명령은 file 의 텍스트를 random
file 에 추가 real.txt
하지만 내용은 random
고정되지 않습니다. random
콘텐츠를 으로 리디렉션할 수 있나요 real.txt
?
다음 명령을 시도했습니다.
$ sed -i.old "1s;^;$(cat random)\n;" real.txt
$ cat real.txt
출력은 다음과 같습니다.
some text
sample text
문제는 임의의 파일이 "/*"로 시작하는 txt를 수신할 때 발생합니다. 다음과 같은 오류가 표시됩니다.
$ cat real.txt
/*new text
new line*/
$sed -i.old "1s;^;$(cat random)\n;" real.txt
sed: -e expression #1, char 16: unterminated `s' command
답변1
sed
구문이 작동하지 않는 이유에 대한 질문을 구체적으로 해결하기 위해 작은 따옴표 내에서 프로세스 대체가 발생하지 않습니다.
이 구문은 나에게 효과적입니다.
sed -i.old "1s;^;$(cat random)\\
;" filename
GNU를 사용하면 sed
다음과 같이 작동합니다.
sed -i.old "1s;^;$(cat random)\n;" filename
GNU를 편집하고 집중하면서 sed
나는 두 가지 해결책을 생각해 냈습니다.
1) 내부의 random
번거로운 구문을 피하십시오 sed
. 특정 경우에는 파일 내에서 리터럴 줄 바꿈을 사용합니다.
바꾸다:
/* line1
line2 */
개행 문자(라인 1의 끝 부분)를 다음과 같이 인코딩합니다 \n
.
/* line1\n line2 */
random
(라인 2의 끝) 마지막 개행 문자는 다음과 같습니다.이미\n
명령줄에서와 마찬가지로 코딩합니다 sed
.
2) 내부 편집을 포기 sed
하고 " cat
-and- mv
" 방법을 사용하십시오:
for f in filename; do
mv $f $f.old
cat random $f.old > $f
done