linux中sed怎么反选,bash笔记

0.———->>>>>>>>>if [ “&word” = “condition” ] ;then … fi  注意空格!空格!

1.单引号是直接返回字符串,双引号会将$变量值返回

2.反单引号“中间可以插入其他命令,其返回值可赋值给变量

3.echo $RANDOM会输出0-32767之间的随机数

4.declare -i number=$RANDOM*10/32768 使用declare宣告数值类型: -i int, $RANDOM/32768为0-1 , *n即为0-n

5.declare -a:array -i:int -x:将变量声明为环境变量,与export同 -r:readonly

6.sum=10+20; echo $sum #10+20 由于bash默认变量都为字符,因此,declar -i sum=10+20 此时sum=30

6.$? 为上一条命令的返回值

7.read -p “Please input your word:” -t n word #等待用户n秒,输入的结果放入word变量

8.ulimit 命令可以用来限定登录用户资源使用

9.${variable#str}:从variable变量中删除str(从最前到最后,一个#最短匹配) ${variable##str}:从variable变量中删除str(2个#最长匹配)

10.%为从最后往前删除,%%同理为最长匹配

11.${variable/str1/str2}:将variable中的str1用str2来取代(只取代第一个) ${variable//str1/str2}:将variable中的str1全部用str2来取代

12.username=${username-root} 针对username的值有没有设定来决定”username”的值

变量設定方式         str 沒有設定         str 為空字串         str 已設定非為空字串

var=${str-expr}    var=expr           var=                   var=$str

var=${str:-expr}   var=expr           var=expr             var=$str

var=${str+expr}   var=                  var=expr             var=expr

var=${str:+expr}  var=                  var=                   var=expr

var=${str=expr} str=expr var=expr    str 不變 var=       str 不變 var=$str

var=${str:=expr} str=expr var=expr   str=expr var=expr     str 不變 var=$str

var=${str?expr}   expr 輸出至 stderr   var=                  var=$str

var=${str:?expr} expr 輸出至 stderr  expr 輸出至 stderr     var=$str

“-“表示没有设定就为”-“后面的字符串,”+”表示已经设定了就为后面的字符串。”:”为严格条件

“=”不会将str赋值,只有当str没有设定的时候才会给str赋值。不同于c++: a=b=c的从右到左赋值。var始终只等于str,不受expr影响

“?”同样,var始终是等于str,不受expr影响

uset str;var=${str?变量不存在} #用来判断变量是否存在的一种方式

13.alias la=’ls -a’ 命令别名 unalias

14.history -n:列出最近n条历史命令 -c:将shell中所有history内容clear -a:将新增指令add到histfiles中,若不存在,加入~/.bash_history

-r:read histfiles的内容到目前shell的history中 -w:write history内容写入histfiles中,histfiles不存在,写入默认~/.bash_history

15. !number:执行history中,第number条指令 !!:执行上一条指令 !command:由最近的指令向前搜寻,执行以command开头的指令

16. head/tail -f -n 10 filename 显示filename文件的头部/尾部内容 -f为循环显示 -n为行数

17. find dir -name filename

18. gawk ‘/pattern1/{action1}/pattern2/{action2}’ filename 如:gawk ‘/bash/{print $2}’ test.txt 在test.txt中找到包含/bash/的记录,打印第2个字段

gawk ‘$1!=”name”{print}’ filename 第一个字段与name不同的所有记录

gawk -F “;” ‘/pattern/{action}’ -F设置分隔符,此处为’;’,如果为”,采用\”进行转义

$3~/pattern/ 表示第三个字段与pattern来匹配 /pattern/: /^b/以b开头的字段 /b$/以b结束的字段 /i.m/存在i的字段 /a|b/a或b匹配的字段 /a*b/a出现0或n次的字段(注意不是以a开头b结尾的字段)

BEGIN{print”Startingtheprocessthefile”}

$1==”UNIX”{print}

$2>10{printf”Thislinehasavalueof%d”,$2}

END{print”Finishedprocessingthefile.Bye!”}

此程序中,先显示一条信息:Startingtheprocessthefile,然后将所有第一个字段等于UNIX的整条记录显示出来,然后再显示第二个字段大于10的记录,最后显示信息:Finished

processingthefile.Bye!。

19.echo $var | cut -d’分隔字元’ -f fields cut: -d表示以某个字符为分隔符 -f为显示第fields个字段

echo $var | cut -c 12- -c表示保存第12个字符-最后的字符,也可以cut -c 12-20 保存12-20区间的字符

20.grep: -c 找到字符串的次数 -i忽略大小写 -n输出行号 -v反选,即显示没有该字符串的行

21.sort: -f 忽略大小写 -b忽略最前面的空白字符 -M以月份排序(JAN,DEC等) -n以数字来排序 -r反向排序 -u相同内容仅出现一行 -t分隔符 -k n以第n栏来作为依据排序(同order by)

默认是以a,b,c,d..来排序

22.last | cut -d ‘ ‘ -f1 | sort | uniq -c(uniq相同内容仅出现一行 c为统计次数,i忽略大小写)

23. cat /etc/man.config | wc

141 722 4617

# 輸出的三個數字中,分別代表: 『行、字數、字元數』 -l 仅列出行数 -w仅列出单词个数(words) -c字节数(bytes) -m字符个数

24.ls -l / | tee -a ~/homefile | more tee为双向重导向 一个可以导向到文件,一个导向到屏幕输出 -a为add 即追加到文件,不覆盖原文件

25.last | tr ‘[a-z]’ ‘[A-Z]’ 表示将小写字母替换成大写字母 tr: -d 删除字符串 -s取代掉重复的字元

26.cat /etc/man.config | col -x | cat -A | more col -x通常用来将tab符号用空白符号替代

27.join -t ‘:’ /etc/passwd /etc/shadow 将第二个文件加入到第一个文件 join: -t 分隔符 -i忽略大小写 -1 n第一个文档以第n个字段来做匹配基准 -2 m第二个文档以第m个字段来匹配

28.paste [-d] file1 file2 将file1和file2合并 -d为分隔符,默认是tab,即file1.line1(tab)file2.line1

29.expand [-t] file 将tab键用-t个空格代替 unexpand

30.split -b 300k /etc/termcap termcap 将一个文档分割为多个文档 -b为设定大小 termcap为前缀,分割后为termcapaa,termcapab,ac..

31. find /sbin -perm +7000 | xargs ls -l 因为ls不是管道命令,即前一条命令的结果不能通过管道(|)传递给ls,此时使用xargs,将结果变为stdin传递给ls

32.#====================遍历文件内容=====================

cat test.txt > while read oneline;do

echo $oneline

done

#===================================================

33.-eq 等于

-ne 不等于

-gt 大于

-ge 大于等于

-lt 小于

-le 小于等于

34.case $var in

pattern)

command  ;;

*) command ;;

esac

35. sed -i ‘s/str1/str2/g’ filename 将filename中的str1用str2替代

sed -i ‘s/str1/str2/g’ | `grep str1 -rl /dir` dir下的str1文件名改为str2

sed ‘y/1234567890/abcdefghij/’ filename -y 1234567890与abcdefghij一一对应替换(1->a 2->b)

sed -i ‘s/^str1.*$/str2/g’ filename 将str1开头的这一行所有内容替换成str2

36.awk ‘{n=NR;if(n==1)n=2;else if(n==2)n=1;print n,$0}’ filename|sort -n -k1|cut -d ” ” -f2- 交互文件的第一与第二行(或其他任意行)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值