특정 값을 sed로 교체

특정 값을 sed로 교체

수백 개의 $.

$ cat /tmp/file

$one $t $three
$one $t $three $t $three

sed로 시작하는 값만 바꾸려고 합니다 $t.

$ sed "s/\$t/foo/g" /tmp/file

$one foo foohree
$one foo foohree foo foohree

그러나 위 명령은 $three이러한 값도 대체합니다. 이런 일이 발생하지 않도록 하려면 어떻게 해야 합니까?

답변1

노력하다:

sed "s/\$t\>/foo/g" /tmp/file

\>단어 끝 부분에 대한 정규식 패턴 일치입니다.

답변2

아래의 sed 및 awk 명령을 사용해 보십시오.

 awk '{for(i=1;i<=NF;i++){if($i =="$t"){gsub(/\$t/,"foo",$i)}}}1'  filename

sed 명령

sed "s/\$t /foo /g" filename

산출

$one foo $three
$one foo $three foo $thre

이자형

관련 정보