다음 명령은 네 번째 줄에 패턴을 추가합니다.
sed -i '4i pattern' file
하지만 파일에 4줄 미만이 포함되어 있으면 작동하지 않습니다. 요구 사항은 네 번째 줄에 빈 접두사 줄이 있는 패턴을 추가해야 한다는 것입니다.
예상되는 결과:cat -n file
1 line1
2
3
4 pattern
GNU sed 버전 4.2.1
답변1
최소한 4줄이 있는지 확인하기 위해 몇 개의 빈 줄로 파일을 채울 수 있습니다.
{ cat file; echo; echo; echo; } | sed -e '4i pattern'
이후에 뒤따르는 빈 줄을 잘라내려면 다음과 같이 파이프할 수 있습니다.
| sed -n 'H; ${g; s/^\n//; s/\n\+$//; p}'
또는
| tac | awk '/./{p=1}p' | tac
또는 최소 개수의 빈 줄을 추가하세요.
{ cat file; for ((i=$(wc -l <file); i<3; i++)); do echo; done; } | sed '3a pattern'
sed 프로그램은 4행 앞에 삽입하는 대신 3행 뒤에 추가하도록 변경되었습니다.
답변2
file
행 수가 충분한 지 확인하세요 wc -l
(행 개수 계산).
파일에 줄이 충분하지 않으면 경고가 표시됩니다.
[ $(cat file | wc -l) -ge 4 ] && sed -i '4s pattern' file || echo "not enough lines"