两个文件求和,按照某咧
awk 'NR==FNR{a[$1]=$2;next}NR>FNR{if($1 in a) a[$1]+=$2 }END{for(x in a)print x"\t"a[x]}' 1.txt 2.txt
awk 'NR==FNR{a[$1]=$2;next}NR>FNR{if($1 in a) b[$1]=a[$1]+$2 }END{for(x in b)print x"\t"b[x]}' 1.txt 2.txt
array=(bill chen bai hu);
num=${#array[@]} //获取数组元素的个数。
ps aux |grep -v USER | sort -nk +4 | tail 按照内存使用大小排序
find com -name *.class | xargs grep 'FetchRMRBTemplate' 遍历一个目录下的所有文件找关键字
find . -name "*.xml" | xargs wc -l 统计每个文件,和所有文件的和的总行数
Shell脚本调试工具set
具体使用方法:首先使用set -x开启调试模式,最后使用命令set +x关闭调试模式。
[root@localhost shell]# cat hello.sh
#!/bin/bash
# This is a test script.
# 2013/12/20#使用set命令的选项x,启动调试模式set -x
NAME=Jhon
echo $NAME
echo "Hello,$NAME"#使用+x表示关闭调试模式set +x
[root@localhost shell]# ./hello.sh+ NAME=Jhon+ echo Jhon
Jhon+ echo Hello,Jhon
Hello,Jhon+ set +x
awk '{sum=sum+$3} END {print sum}' 1.log 第三列的和
comm -3 <(sort 3.log|uniq ) <(sort 2.log|uniq ) | sed 's/^\t//' 差集
comm -12 <(sort 3.log|uniq ) <(sort 2.log|uniq ) | sed 's/^\t//' 交集
grep -F -f 2.log 3.log 交集
grep -F -f -v 2.log 3.log 差集
cat s.txt | sed -e '/^$/d' >> s.0.txt 去掉文件的空行
sed -n '2, 10!p' input //表示打印出非2--10行的行
sed:-i:与-e的区别在于:当使用-e时,sed执行指令并不会修改原输入文件的内容,只会显示在bash中,而使用-i选项时,sed执行的指令会直接修改原输入文件。
删除:d命令
$ sed '2d' example-----删除example文件的第二行。
$ sed '2,$d' example-----删除example文件的第二行到末尾所有行。
$ sed '$d' example-----删除example文件的最后一行。
$ sed '/test/'d example-----删除example文件所有包含test的行。
sed 's/w/a/g' s.txt 文件中的 w 替换问a