![파일에 (nx)개의 라인이 있으면 라인 n [RHEL6]에 패턴을 추가합니다.](https://linux55.com/image/139799/%ED%8C%8C%EC%9D%BC%EC%97%90%20(nx)%EA%B0%9C%EC%9D%98%20%EB%9D%BC%EC%9D%B8%EC%9D%B4%20%EC%9E%88%EC%9C%BC%EB%A9%B4%20%EB%9D%BC%EC%9D%B8%20n%20%5BRHEL6%5D%EC%97%90%20%ED%8C%A8%ED%84%B4%EC%9D%84%20%EC%B6%94%EA%B0%80%ED%95%A9%EB%8B%88%EB%8B%A4..png)
다음 명령은 네 번째 줄에 패턴을 추가합니다.
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"