줄 끝과 특정 n 문자 앞에 문자열을 추가하는 방법

줄 끝과 특정 n 문자 앞에 문자열을 추가하는 방법

파일의 줄 끝에 문자열을 추가하는 방법: 3자 앞에도 추가할 수 있습니다.

시도했지만 결국 문자열 끝에 추가되었습니다. 누구든지 나를 도와줄 수 있나요?

예: I/P:

file1.txt

콘텐츠:

a
bbbb
vvvvv
cccccc
dd
rules('example here i dont need to get added')
rules('test', [abc,bcd]).

나는 사용하려고

sed -i '/rules/ s/$/ ***/' file1.txt

산출:

rules('test',[abc,bcd]). ***

그러나 선호되는 o/p:

rules('test',[abc,bcd,***]).

규칙과 일치하는 두 개의 행이 있지만 두 번째 행에 나타나도록 해야 합니다. 이것을 시도했습니다.

sed '/rules/ s/\(...\)$/ ,***\1/'

하지만 작동하지 않습니다

답변1

이것은 작동합니다:

sed -E '/rules/ s/(]\)\.)$/,***\1/' file1.txt

입력하다:

a
bbbb
vvvvv
cccccc
dd
rules('example here i dont need to get added')
rules('test', [abc,bcd]).

산출:

a
bbbb
vvvvv
cccccc
dd
rules('example here i dont need to get added')
rules('test', [abc,bcd,***]).

이렇게 하면 stdout에서 출력을 얻을 수 있습니다. 파일을 수정하려면 -i다음 옵션을 추가하세요.

sed -i -E '/rules/ s/(]\)\.)$/,***\1/' file1.txt

답변2

노력하다

'/rules/ s/\(\]..\)$/,***\1/'

대체 패턴으로.

어디

  • \(... \)"grep"의 패턴\1
  • \]..패턴은 닫는 대괄호(이스케이프해야 하는지 확실하지 않음)와 임의의 두 문자입니다.
  • ,***\1앞에 별표와 쉼표를 붙입니다.

관련 정보