답변:
awk 'NR==1{print; print "new line"} NR!=1'
구체적인 경우에는이 방법이 더 간단해야합니다.
sed '1 { P ; x }' your-file
설명 : 1 행 에서 다음을 수행하십시오.
그런 다음 사이클의 일부로 라인 (지금 비어 있음)이 다시 인쇄됩니다.
줄 바꿈 문자 대신 새 줄 을 추가하려면 (처음 이해 한 것) 다음 명령을 사용하십시오 (추가).sed
a\
sed '1 a\
appended line' your-file
또는
sed '1 aappended line' your-file
appended line
1 행 다음 에 " "를 추가 합니다.
sed -i '1 a\\' file
그냥 줄 바꿈.
'1 aapended line'
예로 GNUism이라는 단점 만 있습니다.
sed ':a;N;$!ba;s/\n/\n\n\n/' yourBigFile
이것은 당신을 위해 일할 수 있습니다 :
sed 1G file
something
줄 바꿈 뒤에 삽입하려면 다음을 수행하십시오.
sed '1{G;s/$/something/}' file
또는 핸들을 sed 한 경우 \n
:
sed '1s/$/\nsomething/' file
물론 a
더 쉽다 :
sed '1a something' file
\n
에 줄 바꿈 을 추가하십시오 !
나는 보통 ed
이것을 위해 사용 합니다 :
(echo 1a; echo 'Line to insert'; echo .; echo w) | ed - filename
A와 유사 sed
솔루션,하지만 탈출 줄 바꿈의 혼란없이.
echo
특히 아래의를 bash
: ed - filename <<< $'1a\nLine to insert\n.\nw'
.
dash
시스템 에서 작동하지는 않습니다 (예 : 많은 시스템의 경우) /bin/sh
.
echo
. 스페어 링 모든 echo
의는 참으로 bash
단지 기능 만 감소 echo
4 1 일부터 카운트를 dash
하고 ksh
너무 : echo '1a\nLine to insert\n.\nw' | ed - filename
.
나는 이것을 위해 파이썬을 사용할 것이다.
import fileinput
for linenum,line in enumerate(fileinput,FileInput("file",inplace=1)):
if linenum ==1:
print ""
print line.rstrip()
else:
print line.rstrip()`
위의 답변 중 어느 것도 원본 파일에 변경 사항을 저장하는 방법에 대해 언급하지 않았으므로 OP가 요청한 것으로 생각합니다.
내가 페이지에 갔을 때 확실히 필요한 것입니다.
파일이 호출되었다고 가정하면 output.txt
sed -i '1 a This is the second line' output.txt
내 특별한 사용 사례는 xsl 스타일 시트 선언을 junit xml 파일에 자동으로 추가하는 것입니다.
sed -i '1 a <?xml-stylesheet type="text/xsl" href="junit-html.xsl"?>' junit.xml
awk 'NR==2 {print "new line"} 1'