
다음과 같은 파일이 있는 경우:
223 898 teeth
223 899 mouth
223 900 r9
445 800 round
내 질문은 열 3이 문자 "r"로 시작하는 행에 대해서만 awk 명령을 사용하여 열 2를 열 3으로 바꿀 수 있는 방법입니다. 교체를 위해 gsub를 사용할 수 있지만 세 번째 열이 "r"로 시작하는 행만 가져올 수는 없습니다.
또한 r로 시작하는 단어를 찾기 위해 grep을 사용해 보았습니다.
grep "r*" filename | awk '{gsub($2,$3); print;}'
그러나 이 명령은 열 2를 행의 모든 열로 바꿉니다.
답변1
노력하다:
$ awk '$3 ~ /^r/ {$2 = $3}1' file
223 898 teeth
223 899 mouth
223 r9 r9
445 round round
&를 awk
사용하지 않고도 검색과 인쇄를 하나의 명령으로 결합합니다 . 위의 명령은 세 번째 필드가 로 시작하는 행만 찾습니다 . 이 경우 게임 2 대신 게임 3이 사용됩니다.grep
awk
$3 ~ /^r/
r
awk
후행이 1
혼란스러우면 다음과 같이 하세요. true로 평가되어 awk
기본 작업이 수행됩니다 { print $0 }
.