SED : 마지막 줄 뒤에 텍스트를 삽입 하시겠습니까?


76

이 명령 은 파일 시작 부분에 태그를 삽입합니다.

sed -i "1s/^/<?php /" file

SED로 각 파일의 끝에 무언가를 삽입하려면 어떻게해야합니까?


3
{ cat file; echo 'END OF FILE'; } > newFile sh. * 덕분에 작동합니다. (sed가 아니라 작동하고 단순함)

4
간단한 echo "Cool Text" >> file것도 트릭을 수행해야합니다.
— Danpe

답변:


93

sed -e "\$aTEXTTOEND" 가장 간단한 방법입니다.

작동 원리

$마지막 줄과 일치합니다 (일반 sed주소이며 4aTEXTTOEND네 번째 줄 다음에 삽입됩니다) a. append 명령이며 TEXTTOEND추가 할 내용입니다.


Makefile에서 $를 $$로 이스케이프하십시오.
— stevesliva 1

OS의 X의 경우 sed -e '$a\NEWLINE\\'. NEWLINE을 실제 줄 바꾸기로 바꾸십시오.
— Jorge Bucaran

13
sed -i -e "\ $ aTEXTTOEND"<filename>이 전체 명령이됩니다.
— Lasse Meyer

2
macOS에서는 작동하지 않습니다. 심지어 호르헤 Bucaran 코멘트 : 나오지도 : 1 : 명령의 끝에 \ 후 추가 문자 : "는 \ 줄 바꿈을 \\ $"
— 에마 Paolini이에게

1
데비안 9에서는 마지막 줄의 끝에 추가하는 대신 새 줄을 추가합니다.
— Luciano Andress Martini

31

sed이 경우에는 사용할 필요가 없습니다 . 어때요?

echo "<?php" >> file

2
물론, OP의 유스 케이스가 파일을 " <php "및 " >"로 묶고 선택한 내용을 모두 한꺼번에 인용 하는 것으로 추측 할 수 있으므로 실제로sed 조각을 원할 것입니다 .
— dmckee

2
이 작업을 수행 할 수 있습니다 및 줄 바꿈을하지 않으 또한 경우, 사용 에코 -n
— Vinko Vrsalovic

2
나는 추측하고 싶지 않다. 시도 할 때마다 틀 렸습니다.

4
허용 된 답변이 더 유용한 또 다른 이유는을 앞에 추가하는 경우입니다.이 경우 sudo변형이 실패 echo합니다.$PATH
— Tony Cesaro

@TonyCesaro는 : echo내장이지만입니다 도 에서 발견 된 실행 파일$PATH
— ZAN 살쾡이

24

파일에 엔딩 PHP 태그를 넣고 싶다고 가정하면

sed -i '$s/$/\n?>/' file

트릭을해야합니다


1
이것은 마지막 입력 라인을 임의로 조작하려는 경우에 잘 작동합니다. 감사!
— Jay Taylor

명령의 분해 설명 주시면 감사하겠습니다
— GGhe


3

sed 'append (a)'명령을 사용하십시오. 예를 들어 파일 끝에 두 줄을 추가하려면

sed -i -e '$a\
foo1 bar1\
foo2 bar2' file

2

파일의 특정 줄에서 내용을 작성하고 변경하는 간단한 방법. 특정 줄 번호에 무엇이든 삽입하려면 아래 명령을 사용할 수 있습니다.

sed -i '2i i have started' sheikh.log

여기서 2i행 번호 2와 i는 삽입을 나타냅니다. 마지막 줄에 삽입해야하는 경우 $2 대신 사용하십시오 . 삽입 할 텍스트가 시작되었으며 sheikh.log파일 이름입니다.

아래 명령을 사용하여 줄을 변경할 수도 있습니다.

sed -i '2c we have started' sheikh.log

i로 변경되었습니다 we.


-1

처음과 마지막

파일의 시작 / 끝에 텍스트를 삽입 / 추가하는 방법을 검색 한 사람은 다른 작업을 수행하는 방법도 알아야한다고 가정합니다.

cal |                            \
  gsed -E                        \
       -e     '1i\{'             \
       -e     '1i\  "lines": ['  \
       -e 's/(.*)/    "\1",/'    \
       -e '$s/,$//'              \
       -e     '$a\  ]'           \
       -e     '$a\}'

설명

이다 cal출력 gnu-로 파이프 sed(전화 gsed를 통해 설치된 맥 OS에 brew.sh 확장 정규식 (과) -E) 및 6 "스크립트"적용 ( -e)와 함께 탈출 줄 바꿈 \가독성. 스크립트 1과 2는 1i\"1 행에 삽입"하는 데 사용합니다. 스크립트 5 및 6 $a\은 "<last> 라인에 추가"하는 데 사용합니다. 코드가 결과에서 예상되는 것을 나타내도록 텍스트 출력을 세로로 정렬했습니다. 스크립트 3 & 4는 대체 (후자는 "line <last>"에만 적용됨)를 수행합니다. 결과는 명령 출력을 유효한 JSON으로 변환하는 것입니다.

산출

{
  "lines": [
    "    October 2019      ",
    "Su Mo Tu We Th Fr Sa  ",
    "       1  2  3  4  5  ",
    " 6  7  8  9 10 11 12  ",
    "13 14 15 16 17 18 19  ",
    "20 21 22 23 24 25 26  ",
    "27 28 29 30 31        ",
    "                      "
  ]
}

귀하의 질문에 투표하지 않았지만, 우리는 이미 원하시는 결과를 보여주는 몇 가지 답변을 포함하고 있습니다.
— Jeff Schaller

@JeffSchaller Stack Exchange 커뮤니티는 포럼이 아닙니다. 그 목적은 OP가 차단되지 않도록 돕는 것 이상으로 확장됩니다. 목표는 구직자가 답변을 검색 할 때 우연히 발견 할 수있는 많은 옵션으로 글로벌 지식 기반을 구축하는 것입니다. 내가 답변의 제목을 지정한 이유는 사용자가 Google 결과를 클릭하기 전에이 답변의 유틸리티를 인식하도록하기 위해서입니다.
— Bruno Bronosky
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.