1,echo –n 不换行
echo –e 使后面的特殊字符生效
\a 警示 alert
\b 退格 backspace
\c 忽略最后的换行
\f 清屏Formfeed
\n 换行Newline
\r 回车
\t 水平制表
\v 垂直制表
\\反斜杠
printf 输出不换行 如需要 +\n
格式: printf format-string [arguments…]
tr [ options ] source-char-list [replace-char-list]
tr –d ‘\r’< dos-file.txt > Uinix.txt
在方括号表达式内所有的meta字符将失去特殊意义。
1. 访问Shell脚本的参数 positional parameters
shell脚本的命令行参数
2,sh错误追踪
shell –x
3.国际化与本地化
internationalization 缩写为 i18n
localization l10n
第三章:查找和替换
正则表达式:元字符在BRE与ERE中的意义
字符 BRE/ERE
\
。
*
^
$
[]
字符 BRE
\{n,m\}
\(\)
\n
字符 ERE
{n,m}
+
?
|
()
POSIX 方括号表达式
[:与:] 字符集
[.与.] 排序符号
[=与=]等价字符集
正则表达式运算符
\w 匹配任何单词组成字符
\W 匹配任何非字符
\b 等同于\< \>
\B 匹配两个单词组成的空字符
sed
sed ‘s;/home/derectory/;/home/lt/;’
sed ‘s/\/home\/derectory\//home/lt\//’
sed ‘s;\(/home\)/derctory/;\1/lt;’
sed –n ‘/some/p’
匹配特定行
sed –n ‘10,42p’ /etc/passwd
sed ‘/foo/,/bar/ s/baz/quux/g’/etc/passwd
sed ‘/used/!s/new/used/g’ /etc/passwd
sed -n '\/ibuler/ s;IBULER;Ibuler;p' /etc/passwd
echo “Tolstoy is world “|sed “s/Tolstoy/John/”
echo “Tolstoy is world “ |sed “s/To*o/John/”
echo “Tolstoy is world “|sed “s/To[[:alpha:]]*/John/”
echo abc|sed ‘s/b*/1/’ ==== 1abc
echo ‘s/b*/1/g’ ====1a1c1
awk
awk ‘pattern { action }’ [file]
awk ‘{ print $1 }’
awk ‘{ print $2,$5 }’
awk ‘{ print $1,$NF }’
awk ‘NF>0 { print $0 }’
awk –F: ‘{ print $1,$5 }’ /etc/passwd
awk –F: -v ‘OFS=**’ ‘{ print $1,$5 }’ /etc/passwd
awk –F: ‘{ printf “ user %s is really %s \n”,$1,$5 }’ /etc/passwd
awk –F:' ‘{print “user,$1,”is really “,$5}’ /etc/passwd
BINGIN
END
awk ‘BEGIN {FS=”:” ; OFS=”***” }{ print $1,$2} ‘/etc/passwd
sort
-k 后如果指定字段编号则排序键从该字段开始一直持续到记录的结尾(而非字段结尾)
-k 后如果跟的是一对逗号隔开的数字,则排序键将由第一个字段值处开始,结束于第二个字段结尾
使用点号字符位置,则比较的开始(一对数字的第一个)或结束一对数字的第二个
POSIX内置的shell变量
# 目前进程的参数个数
@传递给当前进程的命令行参数,置于双括号内,展开呢为个别的参数
*当前进程的命令行参数,置于双引号内,展开则为一个字符串
-引用时给予shell的选项
? 前一个命令的退出状态
$shell进程的编号
0 shell程序的名称
!最近一个后台命令的进程编号
set
-C 停用 >
-f 停用通配符展开
-x 执行前先展开命令
正则表达式匹配
非打印字符
\f 匹配换页符
\n匹配换行符
\r匹配回车符
\s任何空白字符 包括空格制表符换页符等[[:space:]]
\S任何非空白字符 [^[:space:]]
\t匹配一个制表符
\v匹配一个垂直制表符
特殊字符
$匹配输入字符串的结尾位置
()标记一个子表达式的开始于结束位置,bre中用\(\),ere中不用,但意义已不同
*匹配零次或多次
+匹配前面表达式一次或多次,bre中用\+,ere则直接用
.匹配换行符\n之外的任何单字符
?匹配前面子表达式零次或一次,或指明为非贪婪模式
\将下一个字符标记为特殊字符或原意字符或向后引用
^匹配输入字符串开始的位置,在方括号则为非
|指明两项之中的选择,ere中用
{标记限定符表达式开始rhcerhca
限定符
*匹配前面表达式零次或一次
+匹配一次或多次
?匹配前表达式零次或一次
{n}匹配前表达式n次,在bre中请用\{n\}
{n,}匹配大于n次的字符 bre中用\{n\}
{n,m}匹配至少n次至多m次的字符串
^匹配字符串开始
$匹配字符结尾
\b匹配单词开始于结束
\B非单词编辑 ‘er\B’能匹配verb但不能匹配never
\d匹配一个数字字符
\D匹配一个