我有下面的命令(下圖)這是我喜歡做一個有點聰明表現在兩個方面:使得AWK和聲明聰明
獲取for語句更短,像:
for i in seq `1 22` X;
會那工作?
讓awk語句更聰明一點。喜歡的東西:
awk '{print $1,$2,'$i',$4-$10,$12-$21}'
將從4列減去10的值,和21 12,我希望它通過10打印4,等我該怎麼辦呢?
非常感謝!
桑德
原始命令低於
grep 'alternate_ids' 1000g/aegscombo_pp_1000G_sum_stat_chrX.out > 1000g/aegscombo_pp_1000G_sum_stat_allchr.txt
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 X;
do
echo "Grepping data for chromosome: "$i
tail -n +13 1000g/aegscombo_pp_1000G_sum_stat_chr$i.out | wc -l
tail -n +13 1000g/aegscombo_pp_1000G_sum_stat_chr$i.out |
awk '{print $1,$2,'$i',$4,$5,$6,$7,$8,$9,$10,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21}' \
>> 1000g/aegscombo_pp_1000G_sum_stat_allchr.txt
done
你可以使用'for $ in $(seq 1 22)X;''$'(...)'優先反向打勾並打開命令替換在'seq'命令之前。儘管你可以在'awk'中做一些'print'語句的替代,我不認爲它們會更容易理解。我可能會使用'awk -v i =「$ i」'{print $ 1,$ 2,i,$ 4,...}''將'$ i'的值放入'awk'腳本中。 –
'awk'{$ 3 = $ 11 =「」; print}'' – JJoao
我想你可以試試'awk -v i =「$ i」'{$ 3 = i; $ 11 =「」;打印}「,這與JJoao的建議類似,是Etan在他的回答中提出的。 –