Entering edit mode
5.5 years ago
flogin
▴
280
Hi folk, I have a bed file like this:
AAeBV_JXPU01118970.1_163_1090 1091 164
AAeliv_supercont1.1288_9956_11805 11806 9957
AAeliv_supercont1.152_1983674_1982874 9573 10955
AAeliv_supercont1.172_482498_480625 10001 11983
AAeliv_supercont1.184_260250_259840 10001 10411
AAeliv_supercont1.219_1484226_1486015 11790 10001
AAeliv_supercont1.240_1286280_1287235 10092 10808
AAeliv_supercont1.286_1347920_1346848 11073 10001
AAeliv_supercont1.286_1361694_1362031 10001 10338
AAeliv_supercont1.286_1441550_1443009 10001 11460
I want to organize columns 2 and 3 by length, generating an output like that:
**AAeBV_JXPU01118970.1_163_1090 164 1091
**AAeliv_supercont1.1288_9956_11805 9957 11806
AAeliv_supercont1.152_1983674_1982874 9573 10955
AAeliv_supercont1.172_482498_480625 10001 11983
AAeliv_supercont1.184_260250_259840 10001 10411
**AAeliv_supercont1.219_1484226_1486015 10001 11790
AAeliv_supercont1.240_1286280_1287235 10092 10808
**AAeliv_supercont1.286_1347920_1346848 10001 11073
AAeliv_supercont1.286_1361694_1362031 10001 10338
AAeliv_supercont1.286_1441550_1443009 10001 11460
** represents lines modified.
So I wrote this awk:
awk '{n1=$2;n2=$3;if($2 > $3)$2=n2 && $3=n1;print $0}'
briefly, I put the value of column $2 in a variable n1, the value of column $3 in a variable n2, if $2 is grater than $3, the values should be replaced, and the line printed.
But, the output is:
**AAeBV_JXPU01118970.1_163_1090 1 1091
**AAeliv_supercont1.1288_9956_11805 1 11806
AAeliv_supercont1.152_1983674_1982874 9573 10955
AAeliv_supercont1.172_482498_480625 10001 11983
AAeliv_supercont1.184_260250_259840 10001 10411
**AAeliv_supercont1.219_1484226_1486015 1 11790
AAeliv_supercont1.240_1286280_1287235 10092 10808
**AAeliv_supercont1.286_1347920_1346848 1 11073
AAeliv_supercont1.286_1361694_1362031 10001 10338
AAeliv_supercont1.286_1441550_1443009 10001 11460
The minor value is replaced by 1, can anyone explain to me that incongruence? thanks.
thanks finswimmer, that resolved