아직 존재하지 않는 경우에만 각 줄의 시작 부분에 문자를 추가하세요.

아직 존재하지 않는 경우에만 각 줄의 시작 부분에 문자를 추가하세요.

줄로 구분된 일부 사용자 이름만 포함된 텍스트 파일의 예는 다음과 같습니다.

@Alice 
@Bob 
Cindy 
Leon 
@Mark

@해당 줄이 아직 포함되지 않은 모든 줄의 시작 부분 에 어떻게 추가합니까 ?

답변1

sed스크립트의 명령문에는 행 번호나 주소가 될 수 있고 (not)로 반전될 수 있는 [address[,address]][!] action패턴이 있으므로 여기에 다음과 같이 작성할 수 있습니다.address/regexp/!

sed '/^@/! s/^/@/' < file

@아직 존재하지 않는 줄의 시작 부분에 를 추가하세요 .

주소는 (line start( ) 다음의 라인 /^@/)입니다. 이는 반전되어 작업(대신 line start 사용)이 일치하지 않는 라인에서만 실행됩니다.@^!s/^/@/s@

다음과 같은 방법으로 동일한 효과를 얻을 수 있습니다.

sed 's/^@\{0,1\}/@/' < file

@선행 0 또는 1을 @ERE와 동일합니다.

sed -E 's/^@?/@/' < file

관련 정보