我試圖通過替換由「:」分隔的2列的值來修改製表符分隔的文件,其中一列中存在空值:使用awk/sed替換其他列中的值如果一列值爲空使用awk/sed
開始與這個文件:
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
的問題是還沒有空格(」「)表示空值。 現在我還沒有能夠與第3列,當它是空代替列2的值...
我一直在使用SED嘗試:
sed -e 's/\t\t/\t$3\t/g' input.txt > output
其中一期工程,但它只是代替了文本'3美元',我找不到如何替換$ 3:$ 4的值。
我也曾嘗試AWK:
awk 'BEGIN {
IFS = OFS = "\t"
}
{
for (column = 2; column <= NF; ++column) {
if ($column == "") {
$column = $3
}
}
print
}
'
input.txt > output
但是,這並不工作,要麼(既不使用「」也不是「」它什麼都不做其實...)
你能幫幫我嗎? 謝謝。
這可行(沒有-v,只是-OFS)非常感謝您的幫助! – user971102 2012-01-08 00:02:51