linux學習筆記(3)
阿新 • • 發佈:2019-01-23
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