linux文本常用编辑

对文件的每一列求和:
awk '{ for(i = 1; i<= NF; i++) a[i] += $i } END { for(j = 1;j <= NF;j++) print a[j] }' file
awk合并多个文件并去除重复行

CODE:
awk '!a[$0]++' a.txt b.txt c.txt

解释:
1、当条件 !a[$0]++ 为真时,awk 的默认动作是 print $0,即打印出当前行;
2、当一行首次出现时,a[$0]为假,!a[$0]++为真。以后,当相同的行再次出现时,a[$0]为真,!a[$0]++为假,所以不再打印该重复的行。所以就实现了去除重复行的功能。

类似上面的运用还有很多,比如提取一个文件的奇数行,可用如下方法:
awk 'NR%2' a.txt
sed实现提取奇数行:
sed -n 'p;n'


linux下批量删除空文件(大小等于0的文件)的方法

awk -F: '{a=$4-$3;print a}' | numberStat.pl

find . -name "*" -type f -size 0c | xargs -n 1 rm -f

用这个还可以删除指定大小的文件,只要修改对应的 -size 参数就行,例如:

find . -name "*" -type f -size 1024c | xargs -n 1 rm -f

就是删除1k大小的文件。(但注意不要用 -size 1k,这个得到的是占用空间1k,不是文件大小1k的)。

如果只要删除文件夹或者名字连接等,可以相应的改 -type 参数,具体细节见 man find。

查看linux文件目录的大小和文件夹包含的文件数

    统计总数大小

    du -sh xmldb/

    du -sm * | sort -n //统计当前目录大小 并安大小 排序

    du -sk * | sort -n

    du -sk * | grep guojf //看一个人的大小

    du -m | cut -d "/" -f 2 //看第二个/ 字符前的文字

    查看此文件夹有多少文件 /*/*/* 有多少文件

    du xmldb/

    du xmldb/*/*/* |wc -l

    40752

    解释:

    wc [-lmw]

    参数说明:

    -l :多少行

    -m:多少字符

    -w:多少字

1·提取列:awk '{print $4,"\t",$5,"\t",$9}' data.txt

2.删除列:cat $file|awk '{$1="";print $0}'|sed 's/^ *//'

3.提取文件最后一行
1. tail -n 1 file
2. tail -1 filename
3. sed -n '$p' filename

3.1.删除文件最后一行:sed -i '$d' file

4·曲m-n行: sed -n '100,200p' Chiru_scaffold.len

5·按列排序:sort -k2nr ; msort -k '{m1, r n4}'

6.文本行数:awk 'END{print NR}' human_data

7.求某列的和:awk '{sum+=$4}END{print sum}'

8.去除空白行:sed '/^\s*$/'d file

9.去掉重复行:sort grep2.txt |uniq

10.for i in /ifs1/RDyue/BLAST9k/*.solar;do perl filter.pl $i >$i.filter ;done;

11.for i in *.fa.cut ; do a = basename $i ; for j in $i/*.solar ; cat $j >> $a.solar ; echo >> $a.solar ;done;

12.head -1 xap | sh

13.nohup multi-process.pl -cpu 3 wu_blast.sh4 &

posted @ 2011-04-29 14:05  ACE封印  Views(549)  Comments(0Edit  收藏  举报