다른 파일 앞에 텍스트 파일 출력 추가

다른 파일 앞에 텍스트 파일 출력 추가

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 의 텍스트를 randomfile 에 추가 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

관련 정보