linux学习笔记(3)

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值