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.