파일에 (nx)개의 라인이 있으면 라인 n [RHEL6]에 패턴을 추가합니다.

파일에 (nx)개의 라인이 있으면 라인 n [RHEL6]에 패턴을 추가합니다.

다음 명령은 네 번째 줄에 패턴을 추가합니다.

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"

관련 정보