sed 특정 라인 패턴 검색 끝에 경로 추가

sed 특정 라인 패턴 검색 끝에 경로 추가

검색 모드를 사용하여 특정 줄 끝에 경로 변수를 추가하고 추가하고 싶습니다."기본 안전 경로"추가하고 싶은 문자열::/etc/bla/foo/

문서,

파일 이름

# asdf
# lkaj
# asdah

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

## safdafdhdahdabfdabf
## Aedhadhfdahdahadhda

시도된 패턴 검색"기본 안전 경로"줄 끝에 추가됩니다.

sed '/^Defaults    secure_path = / s/$/ :/etc/bla/foo/' filename

그러나 오류가 발생합니다.

sed -e expression #1, char 38: unknown option to `s'

답변1

awk 명령을 사용하여 추가할 수 있습니다.

bash-4.1$ cat filename
# asdf
# lkaj
# asdah

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

## safdafdhdahdabfdabf
## Aedhadhfdahdahadhda
bash-4.1$
bash-4.1$ awk '$0~/Defaults.*secure_path/{$0=$0":/etc/bla/foo/"}1' filename
# asdf
# lkaj
# asdah

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/etc/bla/foo/

## safdafdhdahdabfdabf
## Aedhadhfdahdahadhda

이 awk 명령은 "Defaults" 패턴을 검색하여 해당 값을 줄 끝에 추가합니다.

사용sed주문하다

bash-4.1$ sed "s?\(Defaults.*secure_path.*\)?\1:/etc/bla/foo/?" filename
# asdf
# lkaj
# asdah

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/etc/bla/foo/

## safdafdhdahdabfdabf
## Aedhadhfdahdahadhda

관련 정보