텍스트 파일의 한 줄 내에서 특정 문자열을 바꾸는 방법

텍스트 파일의 한 줄 내에서 특정 문자열을 바꾸는 방법
$ cat text.txt
my name is Steven
my age is 10
i like dogs

어떤 명령이 더 적절하고 대체 echo "Kate"할 수 있습니까 ?Steventext.txt

답변1

반드시 다음 과 함께 echo "Kate"사용해야 하는 경우 awk:

echo "Kate" | awk 'NR==FNR{a=$0;next} sub("Steven", a, $0)1' - file
  • 표준 입력은 Kate에서 오고 echo "Kate"로 파이프됩니다 awk.
  • awk그런 다음 표준 입력( -)을 읽습니다. NR==FNR첫 번째 파일이 처리되는 동안(stdin) 조건은 true입니다. 변수는 a이 값으로 설정됩니다.
  • file그런 다음 입력이 처리되어 값으로 sub()대체됩니다 .Stevena
  • 이는 sub()1문의 패턴이며 대체 발생 여부에 관계없이 항상 true를 반환합니다. 동등한 조치가 없으므로 { print }교체 후 각 행이 인쇄됩니다.

그러나 더 좋은 방법은 을 사용하는 것입니다 sed.

sed 's/Steven/Kate/' file

파일을 적절하게 변경하려면 다음을 사용하십시오.

sed -i 's/Steven/Kate/' file

관련 정보