linux命令

阅读更多

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 

或者就是未用""引用的字符串本身,放到[]结构中。虽然一般情况下可 

 

 

 

如何把不包含某个字符串的行取出来?

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

你可能感兴趣的:(linux命令)