텍스트의 시작과 끝에서 $와 일치하는 텍스트를 추가하는 방법

텍스트의 시작과 끝에서 $와 일치하는 텍스트를 추가하는 방법

텍스트의 시작과 끝에서 일치하는 텍스트를 추가하는 방법$

입력 예:

$ 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 ) 변수, 기본값은 \newline입니다. awk가 레코드를 읽을 때 설정하는 내장 변수 기본값 중 일부를 살펴보겠습니다.

awk -d- '0' <<<'1'

awk는 두 부분으로 구성되며 condition { action }, 그 중 적어도 하나는 awk 명령에 있어야 합니다.

우리의 조건은 이렇습니다무늬/^\$/, ^달러로 시작하여 like가 레코드가 시작되는 앵커이고 레코드가 끝나는 앵커이기 \$때문에 탈출합니다 .^$

레코드 주위에 고정 문자열을 추가하여 레코드를 업데이트한 $0="start " $0 " end"다음 다시 작성합니다.startend$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

관련 정보