텍스트 파일의 시작 부분에 텍스트 한 줄(실제로는 텍스트가 아니고 백슬래시 두 개만 추가)을 추가하려고 합니다. 이 답변에서 찾은 다음을 시도하고 있습니다.대용량 파일의 시작과 끝 부분에 줄 추가
$ sed -i '1i\'"$\\" $Simdata.txt
그러나 나는 그것을 작동시킬 수 없는 것 같습니다. 위의 내용을 사용하면 오류가 발생합니다.
sed: 1: ".txt": invalid command code .
txt 엔딩을 사용하지 않으려고 했지만 다음 오류가 발생합니다.
sed: -i may not be used with stdin
나는 또한 다른 곳에서 찾은 다음 코드 줄을 시도했습니다.
$ sed -i '1i \\' Simdata.txt
sed: 1: "Simdata.txt": invalid command code S
고쳐 쓰다:
@don_crissti, 귀하의 첫 번째 솔루션이 제가 원하는 것입니다. 그러나 예상대로 작동하지 않는 것 같습니다.
$ cat Simdata.txt
abcdefghijkabcdefghijk
//
abcdefghijkabcdefghijk
$ sed '1i\
> \\\\' Simdata.txt
\\abcdefghijkabcdefghijk
//
abcdefghijkabcdefghijk
$ cat Simdata.txt
abcdefghijkabcdefghijk
//
abcdefghijkabcdefghijk
따라서 파일이 업데이트되지 않습니다. 파일을 인쇄하고 싶지 않고 파일을 업데이트하거나 새 파일로 인쇄하기만 하면 됩니다. 또한 나는 어리석은 오타를 만들었습니다. 실제로 두 개의 슬래시를 추가하고 싶었습니다. 나의 최종 목표는 다음과 같습니다.
다음과 같은 파일이 있습니다.
abcdefghijkabcdefghijk
//
abcdefghijkabcdefghijk
//
abcdefghijkabcdefghijk
먼저 파일 시작 부분에 //를 추가하고 싶습니다.
//
abcdefghijkabcdefghijk
//
abcdefghijkabcdefghijk
//
abcdefghijkabcdefghijk
그런 다음 각 // 뒤에 고유한 이름을 추가합니다.
// text 1
abcdefghijkabcdefghijk
// text 2
abcdefghijkabcdefghijk
// text 3
abcdefghijkabcdefghijk
원본 파일을 변경하지 않고 새 파일에 저장합니다. 따라서 위의 질문은 첫 번째 단계를 파악하는 것입니다.
답변1
백슬래시를 이스케이프 처리해야 합니다. 따라서 4개의 백슬래시가 2개의 리터럴 백슬래시를 삽입하게 됩니다.
sed '1i\
\\\\' my_text_file
또는
sed '1s/^/\\\\\n/' my_text_file
첫 번째는 파일 시작 부분에 두 개의 백슬래시가 포함된 새 줄을 삽입하고, 두 번째는 첫 번째 줄의 시작 부분( ) ^
을 두 개의 백슬래시와 \n
ewline으로 대체합니다(동일한 결과).
그리고 osx sed
:
sed '1s/^/\\\\\'$'\n/' mytextfile
답변2
\\
파일 시작 부분에 두 개를 추가하려면이것작동해야 합니다:
echo '\\' | cat - todo.txt > temp && mv temp todo.txt
답변3
echo '\\\\' > newfile.txt; cat oldfile.txt >> newfile.txt