用编程改变大众。。。
分类: LINUX
2015-04-14 10:35:30
1)删除file文件中包含abc字符串所在行,结果写回file文件:
sed /abc/d file > file.tmp
mv -f file.tmp file
删除某一行或最后一行
sed "3,5d" file 删除3到5行
sed "$d" file 删除最后一行
2)将file文件中包含“abc”字符串改为“abcde”,结果写回file文件:
sed /abc/c\abcde file > file.tmp
mv -f file.tmp file
3)查找打印file文件中包含“abc”字符串所在行:
sed -n '/abc/p' file
2、逐行读取file文件中内容,并进行指定操作:
cat file | while read clline
do
name=' echo $clline | awk -F:'{printf $1}'' #输出该行第一个单词,以:为分隔符
XX
XX
done
3、死循环
while : # :空指令,也可认为与"true"等价
do
operation‐1
...
done
4、case/esac语句
echo "Is it morning? Please answer yesor no."
read YES_OR_NO
case "$YES_OR_NO" in
yes|y|Yes|YES)
echo "Good Morning!";;
[nN]*)
echo "Good Afternoon!";;
*)
echo "Sorry, $YES_OR_NO not recognized. Enter yes or no."
exit 1;;
esac
exit 0
5、if 参数详细说明:
文件比较运算符
-efilename 如果 filename 存在,则为真 [ -e /var/log/syslog ]
-dfilename 如果 filename 为目录,则为真 [ -d /tmp/mydir ]
-f filename 如果 filename 为常规文件,则为真 [ -f /usr/bin/grep ]
-Lfilename 如果 filename 为符号链接,则为真 [ -L /usr/bin/grep ]
-rfilename 如果 filename 可读,则为真 [ -r /var/log/syslog ]
-wfilename 如果 filename 可写,则为真 [ -w /var/mytmp.txt ]
-xfilename 如果 filename 可执行,则为真 [ -L /usr/bin/grep ]
filename1-nt filename2 如果 filename1 比 filename2 新,则为真 [ /tmp/install/etc/services-nt /etc/services ]
filename1-ot filename2 如果 filename1 比 filename2 旧,则为真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]
字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)
-zstring 如果 string 长度为零,则为真 [ -z $myvar ]
-nstring 如果 string 长度非零,则为真 [ -n $myvar ]
string1 =string2 如果 string1 与 string2 相同,则为真 [ $myvar = one two three ]
string1 !=string2 如果 string1 与 string2 不同,则为真 [ $myvar != one two three ]
算术比较运算符
num1 -eqnum2 等于 [ 3 -eq $mynum ]
num1 -nenum2 不等于 [ 3 -ne $mynum ]
num1 -ltnum2 小于 [ 3 -lt $mynum ]
num1 -lenum2 小于或等于 [ 3 -le $mynum ]
num1 -gtnum2 大于 [ 3 -gt $mynum ]
num1 -genum2 大于或等于 [ 3 -ge $mynum ]
6、引号使用
1、双引号
使用双引号可引用除字符$、`、\外的任意字符或字符串。这些特殊字符分别为美元符号,反引号和反斜线,对s h e l l来说,它们有特殊意义。如果使用双引号将字符串赋给变量并反馈它,实际上与直接反馈变量并无差别。如果要查询包含空格的字符串,经常会用到双引号。
A、直接使用双引号打印字符:
echo "My Day"
My Day
B、双引号中替换变量
$STR="My Day"
echo "$STR"
My Day
2、单引号
单引号与双引号类似,不同的是s h e l l会忽略任何引用值。换句话说,如果屏蔽了其特殊含义,会将引号里的所有字符,包括引号都作为一个字符串。
STATUS="well"
echo "I feel '$STATUS'"
I fell 'well'
3、反引号
反引号用于设置系统命令的输出到变量。s h e l l将反引号中的内容作为一个系统命令,并执行其内容。使用这种方法可以替换输出为一个变量。反引号可以与引号结合使用。
echo `date`
Sun Jan 13 15:23:34 GMT 2007