많은 파일의 첫 번째 줄로 한 줄을 추가하고 싶습니다. 단, 파일의 첫 번째 줄이 shebang이 아닌 경우에는 두 번째 줄이어야 합니다.
답변1
이를 수행하는 방법에는 여러 가지가 있습니다.
sed '1!b
/^#!/a\
one_line_text
//!i\
one_line_text' infile
줄의 백슬래시(있는 경우)는 이스케이프되어야 합니다(예: \
로 변경 \\
).
빈 파일은 편집되지 않습니다. 또한 이는 파일을 그 자리에서 편집하지 않습니다. 설명서를 확인하여 파일 편집을 sed
지원하는지 확인 -i
하고 해당 옵션의 구문을 확인하세요.
답변2
아래 스크립트에서 첫 번째 줄이 shebang 줄이면 두 번째 줄에 새 내용이 삽입되고, 그렇지 않으면 첫 번째 줄에 내용이 삽입됩니다.
테스트를 거쳐 잘 작동함
#!/bin/bash
if [[ `awk 'NR==1 && $1 == "#!/bin/bash" {print $1}' file` == "#!/bin/bash" ]]
then
sed '2i content' file
else
sed '1i content' l.txt
fi