Linux sed awk

来源:互联网 发布:sql中delete是删除什么 编辑:程序博客网 时间:2024/06/10 09:36

ls按大小排序 ls -lSh  -s 按大小排序     -h 人性化显示ls按时间排序 ls -lrt  -t 按修改时间排序 -r 反序sed修改网卡配置文件,两种方法sed -ri 's/(ONBOOT=).*/\1yes/'            /etc/sysconfig/network-scripts/ifcfg-eth0sed -i 's%ONBOOT=no%ONBOOT=yes%'          /etc/sysconfig/network-scripts/ifcfg-eth0sed -i 's/10.1.1.2/10.1.1.3/g'           把文件中IP 10.1.1.2替换为10.1.1.3sed -i '/^#/d'                           删除以#开头的行sed -i '/^$/d'                           删除空行sed -n 's/\.$//g'                        删除以句点结尾行sed -n    '/^$/=' myfile                 显示空行行号sed -n -e '/^$/=' -e '/^$/p'             myfile 显示空行行号并打印   = 显示行号  -e 后面跟脚本sed -n '2,/mail/p' /etc/passwd           从第二行开始到匹配到mail结束。行号方式跟模式匹配方式的结合使用sed -n 's/mail/& hello /p' file          在mail后加入hello,可使用空格sed -n 's/mail/ hello &/p' file          在mail前加入hello,可使用空格sed -n '/exp1/,/exp2/p'    file          在file文件中搜索与exp1,exp2模式匹配的之间的行数据sed -i '/^#Port 22/i\Port 300'           在匹配行前插入Port 300                   i(in front)sed -i '/^#Port 22/a\Port 300'           在匹配行后插入Port 300                   a(after)sed -i '/^#Port 22/a\Port 22\nPort 300'  在匹配行后插入Port 22并换行插入Port 300  \n换行符sed -n '/one/,/two/'                     打印匹配one的行,也打印匹配two的行sed -n '3,5{=;p}'                        打印3-5行并显示等号,不同编辑命令用分号隔开  sed -n '3,5!{=;p}'                       用!表示对前边匹配的模式取反sed -n '/^#/!{/^$/!p}'    sshd_config    打印以#开头的行,用!进行反选 不过滤空格sed -e '/^#/d' -e '/^$/d' sshd_config    对单个文件执行不同操作,每个操作用-esed -n -e '/^#/!p' sshd_config |sed -n '/^$/!p'  匹配以#开头的行,取反,然后在其结果在对空格开头的取反,表示过滤到以#开头的行和空行grep 查找多个文件grep -e IPADDR -e HWADDRgrep -E "IPADDR|HWADDR"grep    "IPADDR\|HWADDR"grep "mount" -C 3                   显示匹配某个结果的前三行和后三行,使用 -C 选项:grep  -rn  "aliyun"  /etc           在/etc下所有子目录中查找含有aliyun的文本grep -o "[[:space:]]" a|cat -A      匹配空格     -A 在行尾加上$grep -o "[[:blank:]]" a|cat -A      匹配制表符grep -v '^#\|^$' sshd_config        <span style="font-family: Arial, Helvetica, sans-serif;">不显示注释与空行 -v 打印不匹配的行</span>grep    '^[^#]'  sshd_configgrep -C 5 foo file                  显示匹配foo字串那行以及上下5行grep -B 5 foo file                  <span style="font-family: Arial, Helvetica, sans-serif;">显示foo及前5行</span>grep -A 5 foo file                  显示foo及后5行cat rc.local |grep "mount" -C 3     显示匹配某个结果的前三行和后三行,使用 -C 选项:ps -p PID -o lstart                 查看进程启动时间lsof -n -P -t -i :80                查看80端口进程PID -t 只显示进程PID按照文件特征查找     (1)find / -amin -10     # 查找在系统中最后10分钟访问的文件(access time)(2)find / -atime -2     # 查找在系统中最后48小时访问的文件(3)find / -empty        # 查找在系统中为空的文件或者文件夹(4)find / -group cat    # 查找在系统中属于 group为cat的文件(5)find / -mmin -5      # 查找在系统中最后5分钟里修改过的文件(modify time)(6)find / -mtime -1     # 查找在系统中最后24小时里修改过的文件(7)find / -user fred    # 查找在系统中属于fred这个用户的文件(8)find / -nouser         # 查找在系统中属于作废用户的文件 (9)find / -size +10000c  # 查找出大于10000000字节的文件(c:字节,w:双字,k:KB,M:MB,G:GB)(0)find / -size -1000k   # 查找出小于1000KB的文件find . -name "*.jpg" | xargs -i cp {} /opt         按查找到图片复制到目录/opt -i 表示 find 传递给xargs的结果 由{}来代替find / -name "*.txt" -exec rm -f {} \;             在/目录下查找txt文件并执行删除命令find / -type f -user yujindong -ls                 查找用户yujindong所有有普通文件并输出至屏幕find / -type f |wc -l                              统计/下文件个数find / -size +100K  -exec mv {} /tmp/ \;           将/目录下大于100K 的文件转移到/tmp 目录下echo –en 'hell0' > /opt/1.txt                            创建文件1.txt并写入helloawk -F : '{print $NF}' /etc/passwd                       输出passwd每行最后一个字段内容awk '$2 ~ /^baidu$/ {print $0}' file.txt                 显示file.txt文件中以空格分隔的第二列字符串是"baidu"的所有行awk '{if($2== "g1" && $3== "g2") print $0}' file.txt     判断如果某行第二列值为"g1"并且第三列值为"g2",则打印出该行.awk的逻辑表达式有:&& AND,|| O R,! 非awk 'if($2 < $3) print $)' file.txt  判断如果某行第二列值小于第三列值,则打印该行.awk的条件操作符有: < 小于,> = 大于等于,< = 小于等于,~ 匹配正则表达式,= = 等于,!~ 不匹配正则表达式,!= 不等于awk -F : '{printf "%-10s %-10s %-10s\n",$1,$2,$3}'       列对齐diff -c a b                      比较文件a与b不同之处-q 显示有无差异-c 显示全部,标出不同之处-b 不检查空格字符的不同-B 不检查空白行-r 比较子目录中的文件sort -t':' -k 3 -n /etc/passwd   对/etc/passwd根据用户ID进行数值排序 -k 指定排序的字段 -t 指定字段分隔符 -n 按数字排序ls -l | grep "^d" |awk '{print $9}' 显示文件夹名称命令截取IP地址ifconfig eth0 | awk -F'[ :]+' 'NR==2 {print $4}'解释[ :]+ 中括号里面的第一个空格和冒号是awk多个分隔符的表示方式,+号表示至少匹配一次,在多个分隔符时,这里一定要用+NR==2 表示截取ifconfig中的第二行,相当于sed的截取(sed -n '2p')ifconfig eth0 | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' | sed 's/Bcast.*$//g'tcpdump -i eth1 -nn -s 0 dst port 80 and host 10.1.1.2 -c 100 -vv -w /tmp/d.cap  #-nn 不把网络地址转换成名字  两个n分别代表两列ip  -t 不打印时间戳# src 源地址 dst 目的地址  dst port ! 22 不抓取目标端口是22的数据包ssh -p 22 root@10.1.1.2 'bash -x -s' < /deploy.sh -x参数让shell打印每一行执行的命令 -s则表示从标准输入读取要运行的脚本批量传文件 for ip in `cat ip` ; do scp 3.txt $ip:/root ; donevim        <span style="font-family: Arial, Helvetica, sans-serif;">:set nu 显示行号   :set nonu 不显示行号</span>H          到屏幕顶端M          <span style="font-family: Arial, Helvetica, sans-serif;">到屏幕中间</span>L          到屏幕底端gg/1G      到文件开始G          到文件结尾d0         删至行首d$/D       删至行尾dH         删除到屏幕顶端dL         删除到屏幕底端dgg/d1G    删除到文件开始dG         删除到文件结尾


修改命令提示符的显示方式  vim ~/.bashrc 加入一行PS1="\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@\h \[\e[35;40m\]\$PWD\[\e[0m\]]\\$ " 显示路径 有颜色sed 方式添加sed -i '/PS1/d' ~/.bashrcsed -i '/^fi/a\PS1="\\\[\\\e[37;40m\\\][\\\[\\\e[32;40m\\\]\\\u\\\[\\\e[37;40m\\\]@\\\h \\\[\\\e[35;40m\\\]\\\$PWD\\\[\\\e[0m\\\]]\\\\$ "' ~/.bashrc



0 0
原创粉丝点击