수백 개의 $
.
$ 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
이자형