텍스트의 시작과 끝에서 일치하는 텍스트를 추가하는 방법$
입력 예:
$ hello
$ yes
r no change
파일의 시작과 끝 부분에 텍스트를 추가하고 일치시키고 싶습니다 $
. 나는 출력을 원한다.
start $ hello end
start $ yes end
r no change
답변1
또 다른 sed
방법:
sed '/^\$/ s/.*/start & end/' infile
sed
는 의 일치 패턴 부분 에 &
대한 역참조입니다 s/<pattern>/<replace>/
.
다음을 사용하여 awk
동일한 작업을 수행할 수도 있습니다 .
awk '/^\$/{ $0="start " $0 " end" }1' infile
in 은 awk
현재 $0
레코드/라인을 나타냅니다. 레코드/라인은 awk의 내장 함수에 따라 구분됩니다 RS
(오른쪽에코코드에스eparator ) 변수, 기본값은 \n
ewline입니다. awk가 레코드를 읽을 때 설정하는 내장 변수 기본값 중 일부를 살펴보겠습니다.
awk -d- '0' <<<'1'
awk는 두 부분으로 구성되며 condition { action }
, 그 중 적어도 하나는 awk 명령에 있어야 합니다.
우리의 조건은 이렇습니다무늬즉 /^\$/
, ^
달러로 시작하여 like가 레코드가 시작되는 앵커이고 레코드가 끝나는 앵커이기 \$
때문에 탈출합니다 .^
$
레코드 주위에 고정 문자열을 추가하여 레코드를 업데이트한 $0="start " $0 " end"
다음 다시 작성합니다.start
end
$0
/pattern/ { action }1
, 1
여기서 is는 실제로 aek의 기본 인쇄 작업을 활성화하는 항상 true 조건입니다. 결과가 true이고 인쇄 작업을 트리거하는 조건을 작성할 수 있습니다.
awk '/pattern/ { action }; 1!=0'
awk '/pattern/ { action }3'
...
print
또는 작업 자체를 사용할 수도 있습니다.
awk '/pattern/ { action }; { print }'
답변2
$ sed '/^\$/{s/^/start /; s/$/ end/;}' abc.txt
start $ hello end
start $ yes end
r no change