다음은 예제 파일입니다.
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
답변
이것은 당신을 위해 작동합니다
sed -e 's_^all: .*_& anotherthing_'
s 명령 (대체)을 사용하여 정규식을 충족하는 행을 검색 할 수 있습니다. 위의 명령 &
에서 일치하는 문자열을 나타냅니다.
답변
$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
답변
bash에서 :
while read -r line ; do
[[ $line == all:* ]] && line+=" anotherthing"
echo "$line"
done < filename
답변
다음은 sed를 사용하는 또 다른 간단한 솔루션입니다.
$ sed -i 's/all.*/& anotherthing/g' filename.txt
설명:
all. *는 ‘all’로 시작하는 모든 행을 의미합니다.
& 일치를 나타냅니다 (예 : ‘all’로 시작하는 전체 줄)
그런 다음 sed는 전자를 나중으로 바꾸고 ‘anotherthing’단어를 추가합니다.
답변
awk 솔루션 :
awk '{if ($1 ~ /^all/) print $0, "anotherthing"; else print $0}' file
간단히 : 행이 all
print와 “anotherthing”으로 시작하면 행만 인쇄합니다.