다음은 예제 파일입니다.
somestuff...
all: thing otherthing
some other stuff
내가하고 싶은 것은 다음과 all:같이 시작하는 줄에 추가하는 것입니다 .
somestuff...
all: thing otherthing anotherthing
some other stuff
답변:
이것은 나를 위해 작동합니다
sed '/^all:/ s/$/ anotherthing/' file
첫 번째 부분은 찾을 패턴이고 두 번째 부분은 $줄 끝을 사용하는 일반 sed의 대체 입니다.
프로세스 중에 파일을 변경하려면 -i옵션을 사용하십시오.
sed -i '/^all:/ s/$/ anotherthing/' file
또는 다른 파일로 리디렉션 할 수 있습니다.
sed '/^all:/ s/$/ anotherthing/' file > output
$0조건과 일치하면 awk에 텍스트를 추가 할 수 있습니다 .
awk '/^all:/ {$0=$0" anotherthing"} 1' file
/patt/ {...}선이에서 지정한 패턴과 일치하면에 patt설명 된 작업을 수행합니다 {}./^all:/ {$0=$0" anotherthing"}줄이로 시작하면 (로 ^표시됨) 줄에 all:추가 anotherthing합니다.1참 조건으로 기본 동작을 트리거합니다 awk: 현재 줄을 인쇄합니다 ( print $0). 이것은 항상 발생하므로 원래 줄 또는 수정 된 줄을 인쇄합니다.주어진 입력에 대해 다음을 반환합니다.
somestuff...
all: thing otherthing anotherthing
some other stuff
변수에 추가 할 텍스트를 제공 할 수도 있습니다.
$ awk -v mytext=" EXTRA TEXT" '/^all:/ {$0=$0mytext} 1' file
somestuff...
all: thing otherthing EXTRA TEXT
some other stuff
awk: can't set $0
/usr/xpg4/bin/awk"좋은"awk를 사용할 수 있습니다 .
awk 솔루션 :
awk '{if ($1 ~ /^all/) print $0, "anotherthing"; else print $0}' file
간단히 : 행이 allprint와 "anotherthing"으로 시작하면 행만 인쇄합니다.
awk '$1=="all:" {$(NF+1)="anotherthing"} 1'
condition {actions}쌍 으로 구성 됩니다. 이 경우 condition생략, 조치는 모든 레코드에 대해 수행된다. 이 경우 {actions}생략하고 조건이 평가되는 사실 (수에 대한 경우이다 1) 다음의 기본 동작은 현재 레코드를 인쇄하는 것입니다.