我在awk中有一个关联数组,它被填充如下:
chr_count[$3]++
Run Code Online (Sandbox Code Playgroud)
当我尝试打印我的时候chr_counts,我用这个:
for (i in chr_count) {
print i,":",chr_count[i];
}
Run Code Online (Sandbox Code Playgroud)
但毫不奇怪,i的顺序没有以任何方式排序.是否有一种简单的方法来迭代排序的键chr_count?
我在.bashrc中有这个自定义函数:
function ord() {
printf '%d' "'$1"
}
Run Code Online (Sandbox Code Playgroud)
如何让这个函数与xargs一起使用?:
cat anyFile.txt | awk '{split($0,a,""); for (i=1; i<=100; i++) print a[i]}' | xargs -i ord {}
xargs: ord: No such file or directory
Run Code Online (Sandbox Code Playgroud) 很多时间都进入了一个bug,它追溯到排序......
有人解释为什么我得到这个未排序的结果,当bash文档告诉我分隔符是从白色到非白色字符的转换?第一个字段不应该排序吗?
>sort myfile.txt
10_10000000 19
10_10000001 20
10_10000002 19
10_10000003 17
10_10000004 16
10_1000000 44
10_10000005 16
10_10000006 16
10_10000007 17
10_10000008 16
Run Code Online (Sandbox Code Playgroud)
当然使用+0 -1给了我预期的结果:
>sort +0 -1 myfile.txt
10_1000000 44
10_10000000 19
10_10000001 20
10_10000002 19
10_10000003 17
10_10000004 16
10_10000005 16
10_10000006 16
10_10000007 17
10_10000008 16
Run Code Online (Sandbox Code Playgroud)
一些metainfo:
>type sort
sort is hashed (/bin/sort)
Run Code Online (Sandbox Code Playgroud)
我在用
sort (GNU coreutils) 5.97
>locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
Run Code Online (Sandbox Code Playgroud) 我在"导出设置"对话框中保存了一些图形样式,可在"文件" - >"导出设置"下访问.
有没有办法以编程方式加载我的一个样式?即.我目前需要多次鼠标点击来加载我想要的样式,然后将其应用到图中,然后告诉它导出并为文件命名.我觉得这一切应该可以通过一些命令来实现,但我找不到正确的信息.
我有一个简单的bash脚本,我使用split生成一些临时文件,做一些处理,然后尝试追踪最后的所有文件并合并它们
rand_int=$RANDOM
split -d -l $n_lines_split $1 $rand_int #works fine
for f in $(find . -amin -200 -regex '.*$rand_int.*' ); do
(some processing here) ;
done
Run Code Online (Sandbox Code Playgroud)
我的问题是在find命令中,$ rand_int按字面解释,而我想使用变量的值.
我有一个名为file1.txt的文件:
dir1
dir2
dir3
...
Run Code Online (Sandbox Code Playgroud)
我想使用xargs来检查文件系统中是否存在一些文件,如下所示:
cat file1.txt | xargs -i ls /projects/analysis7/{}/meta_bwa/hg19a/*varFilter 2>/dev/null
Run Code Online (Sandbox Code Playgroud)
但是xargs似乎永远不够聪明,无法扩展*.即,即使它们与模式匹配(如果*被扩展),它也永远不会找到文件.
有任何想法吗?
我使用的是 Centos 6,bash 版本 4.1.2。
在我的旧 centos 5 盒子中(我不再有它了),我可以通过命令键入部分内容,当我发现我不想运行该命令时,我会按 ctrl-c 取消并获取提示符上的新行。
在我的新安装中,如果我在输入命令时按 ctrl-c,我实际上会在命令取消之前在该行的当前位置插入一个“^C”,并且新的提示行可用。
没什么大不了的,但是如果我回顾我的历史记录,它现在充满了带有“^C”的命令,这是我想避免的,因为我经常使用我的历史记录。
那么,知道如何使用 ctrl-c 取消,但不在行中插入“^C”吗?