awk语句
需求是从几十个文件夹中找出其中的bam文件,然后把它们放到一个文件夹下。
for i in $(find ./ -name *.bam);do cp -vf $i ../fold;done
-f:强制复制
-v:详细显示命令执行的操作
uniq命令:文件合并,自动更新totallog
需求是把一个文件夹中几十个文件都与另一个文件夹中的一个文件合并。
能把那一个文件覆盖掉最好,但是试了一下不行,只能重定向一个新的文件。
这两个不对!无法正确去重!
cd test;\
cp /fold1/*.* ./;\
cat *.txt > ./totallog_temp.txt;sort ./totallog_temp.txt;uniq ./totallog_temp.txt > ../totallog.txt
这个去重是正确的!
cd /test;\
cp /fold1/*.* ./ |\
cat *.txt > ./totallog_temp.txt;sort ./totallog_temp.txt|uniq > ../totallog.txt
$ wc -l totallog.txt
126781 totallog.txt
$ sort totallog_temp.txt | uniq -dc | wc -l
1886
这个也不对是为什么呢?
cd /test;\
cp /fold1/*.* ./ |\
cat *.txt > ./totallog_temp.txt | sort |uniq > ../totallog.txt
uniq命令可以去除排序过的文件中的重复行,因此uniq经常和sort合用。也就是说,为了使uniq起作用,所有的重复行必须是相邻的
17.10.10修改
应该在每个txt文件后面都加上一个换行符才行
不然文件都连到一行去了。
cd /Mega/bioinfo/PMO/hanxiao/checkrepeat/test;rm totallog_temp.txt;\
cp /Mega/bioinfo/health/project/NGS/reports/LIMS任务交付/报告每日更新记录/*.* ./;\
for i in $(find -name '*.txt');do echo "" >> $i;done;\
cat *.txt > ./totallog_temp.txt;sort ./totallog_temp.txt|uniq > ../totallog.txt
grep
抓取不符合条件的行
grep -v
应用:删除除了totallog之外的所有文件。
**注意grep正则的使用!**
ls|grep -v totallog* | xargs rm -f