上一条命令的退出状态保存在变量“$?”中
if [ $? -eq 0 ]; then
echo "command was successful!"
else
echo "An error was encountered!"
exit
fi
|
case语句:
case语句是shell中流控制的第二种方式。
FRUIT=kiwi
case "$FRUIT" in
apple) echo "apple pie is quite tasty." ;;
banana) echo "banana pie is quite tasty." ;;
kiwi) echo "kiwi is very tasty." ;;
esac
|
循环
while循环:
x=0
while [ $x -lt 10 ]
do
echo $x
x=`expr $x + 1`
done
|
在这里需要注意的是:x=`expr $x + 1`是两个反引号。不是单引号
until循环:
while循环特别适合于当条件为真时执行一系列命令的情况,但有时我们需要执行一系列命令,知道条件为真
下面的while例子可以写成until的例子:
x=0
while [ ! $x -lt 10 ]
do
echo $x
x=`expr $x + 1`
done
|
for和select循环:
不像while循环当某一条件为假时退出,for和select循环在项的列表上操作
for x in 0 1 2 3 4 5 6 7 8 9
do
echo $x
done
|
文本过滤器
head:
head命令式用来显示一个文件的最开始几行
基本的格式为:
head -n 5 file
tail:
tail命令用来显示一个文件的最后几行
基本格式为:
tail -n 5 file
grep:
查找单词
基本格式为:
grep word file
忽略大小写:
grep -i word file
-v选项:
大多数时候你使用grep来在文件中搜索某一特定的单词,但是有时你想得到不包含某一特定单词的系列行。
-n选项:
当grep在某个文件中寻找给定词时,它保留着它检查过的行号记录。你可以通过-n选项在匹配行前面显示行号
-l选项:
只显示文件名
tr :
命令的功能
tr命名是简化了的sed命令。其主要的功能包括:
a. 用一个字符来替换另外一个字符。
b. 删除字符串中的指定子串。
c. 合并字符串中重复串。
2. 常见的命令格式:
tr -c -d -s ["string1_to_translate_from"] ["string2_to_translate_to"] < input-file
-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。
-d 删除字符串1中所有输入字符。
-s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为
一个字符串。
input-file是转换文件名。虽然可以使用其他格式输入,但这种格式最常用。
指定字符串1或字符串2的内容时,只能使用单字符或字符串范围或列表。
[a-z] a-z内的字符组成的字符串。
[A-Z] A-Z内的字符组成的字符串。
[0-9] 数字串。
\octal 一个三位的八进制数,对应有效的ASCII字符。
[O*n] 表示字符O重复出现指定次数n。因此[O*2]匹配OO的字符串。
CHAR1-CHAR2 从CHAR1 到 CHAR2的所有字符按照ASCII字符的顺序
[CHAR*] in SET2, copies of CHAR until length of SET1
[CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0
[:alnum:] 所有的字母和数字
[:alpha:] 所有字母
[:blank:] 水平制表符,空白等
[:cntrl:] 所有控制字符
[:digit:] 所有的数字
[:graph:] 所有可打印字符,不包括空格
[:lower:] 所有的小写字符
[:print:] 所有可打印字符,包括空格
[:punct:] 所有的标点字符
[:space:] 所有的横向或纵向的空白
[:upper:] 所有大写字母
tr中特定控制字符的不同表达方式
速记符含义八进制方式
\a Ctrl-G 铃声\007
\b Ctrl-H 退格符\010
\f Ctrl-L 走行换页\014
\n Ctrl-J 新行\012
\r Ctrl-M 回车\015
\t Ctrl-I tab键\011
\v Ctrl-X \030
3. 举例说明
a. 合并字符串中重复出现的字符
tr -s "[\n]" < input.txt #文件input.txt中的所有重复出现的换行符最多只出现一次。
echo aaaabbbbccccddddddd | tr -s "[a-z]" #输出abcd
b. 删除字符串中得字符
echo helloworld | tr -d "o" #输出hellwrld
注意echo helloworld | tr -d "hello"的输出结果是wrd,因此tr是将字符串1的各个字符串单独处理的
c. 字符串的替换
假设input.txt中内容是a:b:c:d:e,那么运行tr -s "[:]" "[\t]" < input.txt的结果将是a b c d,各个子串间以tab隔开。同样的出现在字符串1和字符串2中的字符都是单个处理的,并不是将之看成是一个整体。
在vi中也能使用tr命令,但在该命令前要加上要处理的行范围和!,例如1,$!tr -s "[\r]" "[\n]" ($表示最后一行)
文档编辑--sort功能说明:将文本文件内容加以排序。
语 法:sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]
补充说明:sort可针对文本文件的内容,以行为单位来排序。
参 数: -b 忽略每行前面开始出的空格字符。 -c 检查文件是否已经按照顺序排序。 -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。 -f 排序时,将小写字母视为大写字母。 -i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。 -m 将几个排序好的文件进行合并。 -M 将前面3个字母依照月份的缩写进行排序。 -n 依照数值的大小排序。 -o<输出文件> 将排序后的结果存入指定的文件。 -r 以相反的顺序来排序。 -t<分隔字符> 指定排序时所用的栏位分隔字符。 +<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。 --help 显示帮助。 --version 显示版本信息。
awk和sed命令: 基本操作: 1,从一个输入文件中读取一行 2,做一个这一行的拷贝 3,对这一行执行脚本 4,到下一行,重复第一步 这两个命令比较重要而且比较复杂,请查看专门的介绍 |
阅读(1664) | 评论(1) | 转发(0) |