"~" 구분 기호를 사용하여 텍스트 파일의 9번째 열을 읽고 테이블에 있는 해당 11번째 열의 데이터를 검색해야 합니다. 현재 NULL 값이 있는 파일의 열 11에 있는 데이터를 바꿔야 합니다.
유닉스에서 이것을 달성하는 방법.
col1~col2~col3~col4~col5~col6~col7~col8~col9~col10~col11~col12~col13
data1~data2~data3~data4~data5~data6~data7~data8~data9~data10~~data12~data13
데이터 data11이 null입니다. 그래서 data9의 해당 값을 가져와 data11을 바꾸고 싶습니다.
감사해요
답변1
열 9만 열 11로 복사하려면 다음과 같은 스크립트를 사용할 수 있습니다.
awk 'BEGIN {FS="~"; OFS="~"}{$11=$9; print}' <filename>
첫 번째 파일에 한 줄만 있으면 다음을 수행할 수 있습니다.
awk -v val=$(awk -F\~ '{print $9}' <filename b>) 'BEGIN {FS="~"; OFS="~"}{$11=val; print}' <filename a>
답변2
완전히 이해했는지 잘 모르겠습니다. 이게 가까워질까요?
awk -F~ '!$11 {$11 = $9}1' OFS="~" file
col1~col2~col3~col4~col5~col6~col7~col8~col9~col10~col11~col12~col13
data1~data2~data3~data4~data5~data6~data7~data8~data9~data10~data9~data12~data13