阅读更多
linux 命令
1 sed
在文件首添加dxm sed 's/^/dxm&/g' **.txt
在文件未添加dxm sed 's/$/dxm&/g' **.txt
删除空行 sed '/^$/d' **.txt
删除第一行到第10行 sed '1,10d' **.txt
删除最后一行 sed '$d' **.txt
这个命令以前竟然没有用过。。。额,记录一下先
元比较操作符,比较变量或者比较数字.注意数字与字符串的区别.
整数比较
-eq 等于,如:if [ "$a" -eq "$b" ]
-ne 不等于,如:if [ "$a" -ne "$b" ]
-gt 大于,如:if [ "$a" -gt "$b" ]
-ge 大于等于,如:if [ "$a" -ge "$b" ]
-lt 小于,如:if [ "$a" -lt "$b" ]
-le 小于等于,如:if [ "$a" -le "$b" ]
< 小于(需要双括号),如:(("$a" < "$b"))
<= 小于等于(需要双括号),如:(("$a" <= "$b"))
> 大于(需要双括号),如:(("$a" > "$b"))
>= 大于等于(需要双括号),如:(("$a" >= "$b"))
小数据比较可使用AWK
字符串比较
= 等于,如:if [ "$a" = "$b" ]
== 等于,如:if [ "$a" == "$b" ],与=等价
注意:==的功能在[[]]和[]中的行为是不同的,如下:
1 [[ $a == z* ]] # 如果$a以"z"开头(模式匹配)那么将为true
2 [[ $a == "z*" ]] # 如果$a等于z*(字符匹配),那么结果为true
3
4 [ $a == z* ] # File globbing 和word splitting将会发生
5 [ "$a" == "z*" ] # 如果$a等于z*(字符匹配),那么结果为true
一点解释,关于File globbing是一种关于文件的速记法,比如"*.c"就是,再如~也是.
但是file globbing并不是严格的正则表达式,虽然绝大多数情况下结构比较像.
!= 不等于,如:if [ "$a" != "$b" ]
这个操作符将在[[]]结构中使用模式匹配.
< 小于,在ASCII字母顺序下.如:
if [[ "$a" < "$b" ]]
if [ "$a" \< "$b" ]
注意:在[]结构中"<"需要被转义.
> 大于,在ASCII字母顺序下.如:
if [[ "$a" > "$b" ]]
if [ "$a" \> "$b" ]
注意:在[]结构中">"需要被转义.
具体参考Example 26-11来查看这个操作符应用的例子.
-z 字符串为"null".就是长度为0.
-n 字符串不为"null"
注意:
使用-n在[]结构中测试必须要用""把变量引起来.使用一个未被""的字符串来使用! -z
或者就是未用""引用的字符串本身,放到[]结构中。虽然一般情况下可
如何把不包含某个字符串的行取出来?
Posted on
2010年03月18日
by
scq830
a.txt文件如下:
1|1|6022|10000|||0|||
2|1|60233|1600|||0|||OK|
3|1|6022|2000|||0|||
4|1|6022|200|||0|||
用 cat a.txt | grep "|OK|" > b.txt 可以把含有OK的行输出到b.txt
现在我想把不含OK的行输出到另外的文件,请问该怎么做?
awk ‘{if(/OK/) print > "b.txt";else print > "c.txt"}’ a.txt
sed -n ‘/OK/wa
/OK/!wb’ 数据文件
grep ‘OK’ >a
grep -v ‘OK’ >b
shell字符串的处理
截取;
shell字符串的截取的问题:
一、Linux shell 截取字符变量的前8位,有方法如下:
1.expr substr “$a” 1 8
2.echo $a|awk ‘{print substr(,1,8)}’
3.echo $a|cut -c1-8
4.echo $
5.expr $a : ‘\(.\\).*’
6.echo $a|dd bs=1 count=8 2>/dev/null
二、按指定的字符串截取
1、第一种方法:
${varible##*string} 从左向右截取最后一个string后的字符串
${varible#*string}从左向右截取第一个string后的字符串
${varible%%string*}从右向左截取最后一个string后的字符串
${varible%string*}从右向左截取第一个string后的字符串
“*”只是一个通配符可以不要
例子:
$ MYVAR=foodforthought.jpg
$ echo ${MYVAR##*fo}
rthought.jpg
$ echo ${MYVAR#*fo}
odforthought.jpg
2、第二种方法:${varible:n1:n2}:截取变量varible从n1到n2之间的字符串。
可以根据特定字符偏移和长度,使用另一种形式的变量扩展,来选择特定子字符串。试着在 bash 中输入以下行:
$ EXCLAIM=cowabunga
$ echo ${EXCLAIM:0:3}
cow
$ echo ${EXCLAIM:3:7}
abunga
这种形式的字符串截断非常简便,只需用冒号分开来指定起始字符和子字符串长度。
三、按照指定要求分割:
比如获取后缀名
ls -al | cut -d “.” -f2
本文出自“LinuxLeon”
该命令返回下列出口值:
126 可以查找但不能调用 Command 参数指定的命令。
127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。
否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。
示例
1. 要运行注销后后台中的命令,请输入:
$ nohup find / -print &
输入该命令后,显示如下:
670
$ 输出发送到 nohup.out
进程 ID 号更改为 & (表示“and”的符号)启动的后台进程的 ID 号。消息 输出发送到 nohup.out 通知您来自 find / -print 命令的输出在 nohup.out 文件中。查看这些消息后可以注销,即使 find 命令仍在运行。
2. 要运行后台中的命令并且把标准输出重定向到一个不同的文件,请输入:
$ nohup find / -print >filenames &
本例运行 find / -print 命令并且把输出存储到命名为 filenames 的文件中。现在只显示进程 ID 和提示:
677
$
因为 nohup 命令需要片刻时间来启动 Command 参数指定的命令,在注销前请等待。如果太快注销,Command 参数指定的命令可能根本没运行。一旦 Command 参数指定的命令启动,注销就不会对其产生影响。
3. 要运行不止一条命令,请使用 shell 过程。例如,如果写 shell 过程:
neqn math1 | nroff > fmath1
且命名它为 nnfmath1 文件,那么可以为 nnfmath1 文件中所有命令运行 nohup 命令,命令为:
nohup sh nnfmath1
4. 如果给 nnfmath1 文件分配执行许可权,那么可以通过发出如下命令得到相同的结果:
nohup nnfmath1
5. 要在后台中运行 nnfmath1 文件,请输入:
nohup nnfmath1 &
6. 要在 Korn shell 中运行 nnfmath1 文件,请输入:
nohup ksh nnfmath1