답변:
앞 줄에 텍스트를 삽입하는 sed
'삽입 ( i
) 옵션을 사용하십시오 .
sed '1 i\
질문 작성자의 업데이트 :
GNU에서 파일을 제자리에 편집하려면 옵션 sed
을 추가해야했습니다
-i
.
sed -i '1 i\anything' file
또한 구문
sed -i '1i text' filename
비 sed의 경우
백 슬래시 직후 1i\
와 이후에 리턴 키를 눌러야합니다 first_line_text
.
sed -i '1i\
first_line_text
'
또한 GNU 이외의 일부 sed
구현 (예 : macOS의 구현) 에는-i
플래그에 대한 인수가 필요 합니다 ( -i ''
GNU와 동일한 효과를 얻기 위해 사용 sed
).
-i
옵션 이 없으면 작동하지 않습니다 . 수락하기 전에 답변을 업데이트하겠습니다.
sed '1 i\this text is entered above the existing first line' file
나를 위해 일합니다.
sed (GNU sed) 4.2.2
바로 sed '1 i text to insert' -i file
마법처럼 일했다. 감사
awk
아래의 불량 순위 답변을 참조하십시오. 이 작동합니다.
에코는 텍스트를 얻는 데 사용됩니다. Cat filename-콘솔에서 파일을 인쇄하고>를 사용하여 다른 파일 filename1로 전송 한 다음 filename1을 filename으로 이동하여 원하는 파일의 첫 번째 줄에 텍스트를 삽입합니다.
(echo "some text" && cat filename) > filename1 && mv filename1 filename
sed -i '1i new_text' file_name
-i
옵션을 지정하지 않으면 오류가 표시되지 않고 표준 터미널에 출력이 표시되지만 파일에는 텍스트가 삽입되지 않습니다.
-i
스위치 에 관한 것이 아닙니다 .
gnu sed
gnu sed
i
0a
시도한 명령은 않습니다 에서 작동 ex
, 전신에를vi
:
printf '%s\n' 0a 'Anything you want to add' . x | ex file.txt
printf
자체 명령 출력 :
0a
Anything you want to add
.
x
이 0a
수단은 0 번째 줄 뒤에 (즉, 첫 번째 줄 앞에) 추가합니다.
다음 줄 또는 여러 줄 은 추가 할 리터럴 텍스트입니다.
.
자체의 라인은 "추가"명령을 종료합니다.
x
원인 예는 파일 종료에 대한 변경 사항을 저장합니다.
이 오래된 질문에서 아무도 가장 일반적인 sed 명령을 보지 못했다는 것에 놀랐습니다.
$ sed -i '1s/^/new_text\
/' file_name
대부분의 쉘에서 작동하며 여러 sed 버전으로 이식 가능합니다.
GNU sed가 사용 가능한 경우 다음을 사용할 수 있습니다.
$ sed -i '1s/^/new_text\n' file_name
차이점은 GNU sed \n
가 줄 바꿈에 대한 사용을 허용 하고 다른 줄에는 백 슬래시가 앞에 오는 리터럴 줄 바꿈이 필요하다는 것입니다 (GNU sed에서도 작동합니다).
$'…'
구문 을 허용하는 쉘이 사용중인 경우, 개행을 직접 삽입 할 수 있으므로 sed는 개행이 이미 존재 함을 확인합니다.
$ sed -i $'1s/^/new_text\\\n/' file_name
더 많은 sed 버전에서 작동합니다.
불행히도, 위의 모든 답변 (주로 sed
)은 모두 첫 번째 줄을 대체했기 때문에 나에게 적합하지 않았습니다. 나는 Ubuntu 16.04 LTS
기계 위에있다 . 여기 내 해결 방법이 있습니다 GNU Awk 4.0.2
.
awk '{if(NR==1){$0="NEW_FIRST_LINE"$0; print $0} ;if(NR!=1){print $0}}' file_name
sed
대체를 사용하는 답변은 하나 뿐이지 만 기존 줄을 대신하지는 않습니다.
파일의 시작 / 끝에 텍스트를 삽입 / 추가하는 방법을 검색 한 사람은 다른 작업을 수행하는 방법도 알아야한다고 가정합니다.
cal | \
gsed -E \
-e '1i\{' \
-e '1i\ "lines": [' \
-e 's/(.*)/ "\1",/' \
-e '$s/,$//' \
-e '$a\ ]' \
-e '$a\}'
이다 cal
출력 gnu-로 파이프 sed
(전화 gsed
를 통해 설치된 맥 OS에 brew.sh 확장 정규식 (과) -E
) 및 6 "스크립트"적용 ( -e
)와 함께 탈출 줄 바꿈 \
가독성. 스크립트 1과 2는 1i\
"1 행에 삽입"하는 데 사용합니다. 스크립트 5 및 6 $a\
은 "<last> 라인에 추가"하는 데 사용합니다. 코드가 결과에서 예상되는 것을 나타내도록 텍스트 출력을 세로로 정렬했습니다. 스크립트 3 & 4는 대체 (후자는 "line <last>"에만 적용됨)를 수행합니다. 결과는 명령 출력을 유효한 JSON으로 변환하는 것입니다.
{
"lines": [
" October 2019 ",
"Su Mo Tu We Th Fr Sa ",
" 1 2 3 4 5 ",
" 6 7 8 9 10 11 12 ",
"13 14 15 16 17 18 19 ",
"20 21 22 23 24 25 26 ",
"27 28 29 30 31 ",
" "
]
}
1i
첫 번째 줄 앞에 텍스트를 삽입하기 위해 변형을 사용하는 네 가지 답변이 이미 있습니다 . 이 질문을 가진 사람은 문제를 해결하기 위해 답에서 필요한 부분을 추출해야합니다. 질문은 무료이므로 특정 답변을 제공하기 위해 자신의 질문을하고 답변하도록 초대합니다.