1、I/O重定向符:< > 》与管道 |
#! /bin/bash
echo -n "Enter your name!" //输出
printf "the first program is '%s %s '\n" hello word //比echo移植性更好,必须\n 才能换行
tr -d '\r' < dos-file.txt
tr -d '\r' < dos-file.txt > unix-file.txt //删除dos-file.txt中回车符,将内容重新定向输入到unix-file.txt中
for f in dos-file*.txt
do
tr -d '\r' <$f >>big-unix-file.txt
done // 把dos-file.txt内容追加到big-unix-file.txt中
tr -d '\r' < dos-file.txt | sort > unix-file2.txt //将dos-file.txt中内容排序输出到unix-file2.txt中
exit #
重定向符号:<读取作为输入,>输出重定向; 》追加重定向
管道:|
2、用管道写脚本,传入参数。 .findUser.sh,添加执行权限
#! /bin/bash执行./findUser.sh #@#ing 命令,结果如下:
who | grep $1 //grep后面接收一个参数
exit #
3、执行跟踪
set -x将执行跟踪的功能打开,当前命令执行完才打开跟踪, set +x 将执行跟踪的功能关闭,当前命令之行结束才关闭跟踪。
#! /bin/bash执行完毕,控制台输出:
set -x
echo 1st echo
set +x
echo 2end echo
exit #
++ echo 1st echo
1st echo
++ set +x
2end echo
4、grep文本匹配命令
用法:显示匹配一个或者多个模式的文本行,时常作为pipeline的第一步,以便于对匹配的数据作进一步处理。
有各种参数,-i -l -f 等
//连续出现两个天、两个红
grep '天\{2\}' /home/tangqing/data/l*
grep '红\{2\}' /home/tangqing/data/l*
(1)单个表达式匹配多字符
* 匹配*前面的字符出现0个或者多个 如 ab*c *表示匹配0个b或者多个b;
+ 匹配至少一次
?匹配0或者1次
区间表达式,则可以匹配出现的具体次数
\{5 \} 表示连续重现5次
\{3,10\}表示连续重现3-10次之间的次数
\{3,\}表示至少重现3次;
如:[南京]\{1,\} 匹配字符串中重现 南 或者 京 一次以上的。
(2)交替符号-|
(CPU | 控制器) :匹配CPU 或者控制器
交替符号|的优先级比较低,^abcd|degh$,表示起始处是否有abcd 或者结尾处是否有 degh, 这和^(abcd|degh)$不一样,^(abcd|degh)$找的正好是 abcd 或者 正好是dsgh的字符串。
(3)分组符号-()
(why)+ 连续出现why一次或者多次
(4)停驻文本匹配符号- ^ 和 $
^ : 表示文本的开始
$ : 表示文本的结束
下一篇文章专门写grep。