하나의 열에 null 값이있는 경우 ":"로 구분 된 두 열의 값을 바꾸어 탭으로 구분 된 파일을 수정하려고합니다. 이 파일을awk/sed를 사용하여 한 열의 값이 null 인 경우 다른 열의 값 바꾸기
시작 :
id1 id2 pos1 pos2
749 2847443 21 13517135
862 2821796 21 13571669
997 21 13636494
1095 2821826 21 13661335
1131 21 13678797
나는 얻기 위해 열 2를 수정하고 싶은이 :
id1 id2 pos1 pos2
749 2847443 21 13517135
862 2821796 21 13571669
997 21:13636494 21 13636494
1095 2821826 21 13661335
1131 21:13678797 21 13678797
문제는 더 빈 공간 ("")을 나타내는이 없음을 또한 null 값. 어떤 작품
sed -e 's/\t\t/\t$3\t/g' input.txt > output
그러나 그것은 단지 대체 : 내가 나오지 사용하여 시도했다
는 지금 난 ... 3 열이 null 인과 열 2의 값을 대체 할 수 없었다 텍스트 '$ 3'대신 $ 3 : $ 4 값을 대체하는 방법을 찾을 수 없습니다.
나는 또한 시도 AWK :
awk 'BEGIN {
IFS = OFS = "\t"
}
{
for (column = 2; column <= NF; ++column) {
if ($column == "") {
$column = $3
}
}
print
}
'
input.txt > output
그러나이
당신이 좀 도와 주시겠습니까 (... 그것도 "도" ""사용하여 실제로 아무것도하지 않는다) 중 하나가 작동하지 않는 이유는 무엇입니까? 감사합니다. 텍스트는 당신이 2 열 경우는 null 3rd + '**:**' + 4th column
와
, 권리를 대체 할
B: 997 21 13636494
A: 997 21:13636494 21 13636494
을 게시 한 후
이것은 (-v없이, 단지 -OFS)이 도움이된다. 도움을 주셔서 대단히 감사합니다! – user971102