while [ $x -le 1 ];do
command
done
-le 两边的变量与[ ]直接需要有空格。
uniq 只查找相邻行的重复情况,所以一般需要先sort一下、
比较两个文件diff c.txt d.txt | awk '/</{print $2}' c文件有d文件没有的
diff c.txt d.txt | awk '/>/{print $2}' d文件有c文件没有的
</pre><p></p><pre code_snippet_id="1695914" snippet_file_name="blog_20160525_1_478230" name="code" class="html"><pre name="code" class="java">[hadoop@hadoop-02 testshell]$ cat c.txt
127.0.0.2
127.0.0.1
172.0.0.3
127.0.0.12
123.0.3.2
127.0.0.1
[hadoop@hadoop-02 testshell]$ cat d.txt
127.0.0.1
128.0.0.1
127.0.0.3
127.0.0.1
128.0.0.1
127.0.0.3
127.0.0.1
[hadoop@hadoop-02 testshell]$ diff c.txt d.txt | awk '/</'
< 127.0.0.2
< 172.0.0.3
< 127.0.0.12
< 123.0.3.2
比如,要将目录/modules下面所有文件中的zhangsan都修改成lisi,这样做:
sed -i "s/zhangsan/lisi/g" `grep zhangsan -rl /modules`
解释一下:
-i 表示inplace edit,就地修改文件
-r 表示搜索子目录
-l 表示输出匹配的文件名
awk匹配变量的内容 `awk '/'$ucount'/ {print $1}' a.txt|sort|uniq|wc -l` 将变量用‘’单独隔开
shell变量赋值的时候等号两侧不能有空格,不然会被当成命令执行
$#表示参数的数量
$@或$*表示所有参数
$$表示当前脚本执行的进程号
$?表示执行结果。0表示执行成功