С помощью udev
на получите раскладку клавиатуры с помощью:
xkbcomp $DISPLAY mylayout.xkb
Затем вы сможете загрузить ее (один раз udev
равно выключено ) по:
xkbcomp -i mylayout.xkb $DISPLAY
где
можно найти с помощью xinput list
или grep XINPUT / var / log / Xorg.0.log
.
Ссылки, которые могут быть интересны: this и that (не точная копия).
Использование awk:
{
ks[$1 $2] = $3; # save the third column using the first and second as index
k1[$1]++; # save the first column
k2[$2]++; # save the second column
}
END { # After processing input
for (j in k1) { # loop over the first column
printf "\t%s", j; # and print column headers
};
print ""; # newline
for (i in k2) { # loop over the second
printf "%s", i; # print it as row header
for (j in k1) { # loop over first again
printf "\t%s", ks[j i]; # and print values
}
print ""; # newline
}
}
Выход:
~ awk -F, -f foo.awk foo
AGTC ATGC CGTA TCGA
CD4 78 67 32 123
IgD 102 126 82 456
IgM 89 127 117 80
CD3 67 56 54 334
Скрипт awk
для решения вашей задачи:
script.awk
{
arr[$1,$2] = $4; # read array values
c1[$1] = 1; # read row headers
c2[$2] = 1; # read row indexes
}
END { # start fancy printing
printf ("%-18s",""); # first line empty tab
for (i1 in c1) printf("%-18s",i1); printf "\n"; # print headers
# print rows
for (i2 in c2) {
printf("%-18s",i2); # print row index
for (i1 in c1) {
printf("%-18d", arr[i1,i2]); # print row's values
}
printf "\n"; # terminat current row with newline
}
}
бег:
awk -F "," -f script.awk input.txt
выход:
TGTGGTAGTTCGTCTC AGAATAGTCTGATTCT
CD4 0 412
CD24 24 21
CD5 0 430
CD43 0 99
CD34 0 5
CD25 2 4
CD16 40 4
IgD 0 4
CD27 0 87
CD8 0 7
CD19 7 10
CD56 0 3
CD38 0 18
AnnexinV 42 51
- 9 38
CD127 6 39
CD20 2 6
CD138 4 3
IgM 0 2
CD3 0 235
CD14 0 2
Использование Миллера(https://github.com/johnkerl/miller)с
mlr --n2p --ifs "," label key,property,emptyfield,value \
then reshape -s key,value \
then unsparsify \
then cut -x -f emptyfield input.csv
У вас будет
property AGAATAGTCTGATTCT TGTGGTAGTTCGTCTC
- 38 9
AnnexinV 51 42
CD127 39 6
CD138 3 4
CD14 2 -
CD16 4 40
CD19 10 7
CD20 6 2
CD24 21 24
CD25 4 2
CD27 87 -
CD3 235 -
CD34 5 -
CD38 18 -
CD4 412 -
CD43 99 -
CD5 430 -
CD56 3 -
CD8 7 -
IgD 4 -
IgM 2 -