【发布时间】:2012-01-08 02:06:45
【问题描述】:
我正在尝试通过替换以“:”分隔的两列的值来修改制表符分隔的文件,其中一列中有空值:
从这个文件开始:
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
问题还在于没有表示空值的空格(“”)。 现在,当第 2 列为空时,我什至无法用第 3 列替换它的值...
我尝试过使用 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
但这也不起作用(实际上它既不使用 "" 也不使用 " "...)
你能帮帮我吗? 谢谢。
【问题讨论】: