sed를 사용하여 텍스트 파일에 새 줄 문자 추가 [duplicate]

sed를 사용하여 텍스트 파일에 새 줄 문자 추가 [duplicate]

/etc/securetty다음 명령을 사용하여 파일에 다음 내용을 추가하고 싶습니다 sed.

pts/0
pts/1
pts/2
pts/3
pts/4
pts/5
pts/6
pts/7
pts/8
pts/9

이를 위해 다음 명령을 작성했습니다.

sed -i '$a pts/0\\npts/1\\npts/2\\npts/3\\npts/4\\npts/5\\npts/6\\npts/7\\npts/8\\npts/9' /etc/securetty

결과는 다음과 같습니다.

pts/0\npts/1\npts/2\npts/3\npts/4\npts/5\npts/6\npts/7\npts/8\npts/9

나는 분명히 여기에 뭔가를 놓치고 있습니다. 내 명령에 어떤 문제가 있을 수 있나요 sed?

답변1

단순한껍데기방법:

for i in {0..9}; do echo "pts/"$i; done >> /etc/securetty

>>-파일에 출력 추가

>- 파일로 직접 출력(덮어쓰기)

답변2

그건 그렇고, 다음에 추가하고 싶다면이와 같은 기존 파일을 사용하면 sed 또는 쉘 루프가 필요하지 않습니다. 이것은 단지 명령입니다:

$ printf '%s\n' "pts/"{0..10} >> /etc/securetty

삽입하고 싶다면시작여전히 printf를 사용하여 파일 작업을 완료할 수 있습니다.

$ cat file1
europe|EU
australia|AU
china|CN
$ printf '%s\n%s\n' "pts/"{0..10} "$(<file1)"
pts/0
pts/1
pts/2
pts/3
pts/4
pts/5
pts/6
pts/7
pts/8
pts/9
pts/10
europe|EU
australia|AU
china|CN

/etc/securetty다음과 같이 파일의 내용을 바꿀 수 있습니다( sed -i배후에서 똑같은 작업을 수행하더라도).

$ printf '%s\n%s\n' "pts/"{0..10} "$(</etc/securetty)" > tmpsecure && mv -f tmpsecure /etc/securetty

선택하다:

$ { printf '%s\n' "pts/"{0..10}; cat /etc/securetty; } > tmpsecure && mv -f tmpsecure /etc/securetty
# Or
# cat <(printf '%s\n' "pts/"{0..10}) /etc/securetty > tmpsecure && mv tmpsecure /etc/securetty

답변3

그것은해야한다:

sed -i 'a pts/0\npts/1\npts/2\npts/3\npts/4\npts/5\npts/6\npts/7\npts/8\npts/9' /etc/securetty

또는 내용을 파일에 넣고 read (r)sed 옵션을 사용하여 대상 파일에 추가할 수 있습니다.

예:

$ cat input.txt
pts/0
pts/1
pts/2
pts/3
pts/4
pts/5
pts/6
pts/7
pts/8
pts/9

$ cat /etc/securetty
This is a dummy file

주문하다:

sed -i 'r input.txt' /etc/securetty

파일은 /etc/securetty다음과 같이 수정됩니다.

$ cat /etc/securetty
This is a dummy file
pts/0
pts/1
pts/2
pts/3
pts/4
pts/5
pts/6
pts/7
pts/8
pts/9

관련 정보