zoukankan      html  css  js  c++  java
  • 笔记

    学习各种的笔记

    sed的增删改查

    r   支持扩展正则

    a   apend 追加文本到指定行后

    i   insert 插入文本到指定行前

    如sed ‘2a 106,dandan,CSO’ 文本名

     在sed工具中  引号比较

    sed '2i $PATH' 文本名 #单引号内容原本插入

    sed 2i $PATH 文本名不加单引号则错误

    sed "2i $PATH" 文本名 加双引号则被解析

    多行增

    附加录入简单文本 cat > 文本名 <<EOF

    内容,,,,

    EOF 结束的标志

    echo -e '' luo luo'' # 表示换行 表示tab键

    sed '2a 内容1 内容2' 文本名

    优化ssh配置

    备份 cp /etc/ssh/sshd_config{,.bak}

    sed -i '13i port 端口号 PermitRootLogin no PermitEmptyPasswords no UseDNS no GSSAPIAuthentication no' /etc/ssh/sshd_config

    查看 sed -n '13,17p' /etc/ssh/sshd_config

    sed 'd' 文本名 默认全部删除

    sed '2d' 文本名 删除第二行

    sed '2,5d' 文本名 删除第二行到第五行内容

    sed '/匹配的内容/d' 文本名  匹配到有的内容就删除该行

    sed '/内容1/,/内容2/d' 文本名 删除包含内容1的行到内容2的行

    sed '3,$d' 文本名 从第三行开始删除直到删除到最后一行

    sed '/内容/,3d' 文本名 删除包含内容到第三行的内容

    sed软件使用正则表达式会找出所有匹配的行,即使有数字地址限制

    sed '2,/内容/d' 文本名 从第二行删除到含内容的行结束

    sed 10  随机输出10个数

    sed '1,+2d' 文本名 删除第一行到第3(1+2)行的文本

    sed '2,3!d' 文本名 除了第二行和第三行以外的内容都删除

    sed '/内容/d' 文本名 删除包含内容的行

    改,替换

    sed '2c 内容' 文本名

    sed替换模型

    sed -i 's/目标内容/替换内容/g' 文本名  sed -i 's#目标内容#替换内容#g' 文本名  

    eval sed 's#$x#$y#g' 文本名 eval 命令能读入变量

    取ip地址

    ifconfig eth0 | sed -rn '2s#^.*addr:(.*) Bcast:.*$#1#gp'

    优化开机

    chkconfig --list | egrep -v "sshd|crond|rsyslog|sysstat|network" | awk '{print "chkconfig",$1,"off"}' | bash

    直接awk

    chkconfig --list | egrep -v "sshd|crond|rsyslog|sysstat|network" | awk '{print "chkconfig",$1,"off"}'

     | bash

    sed -n '2p' 文本名

    sed -n '2,3p' 文本名

    sed -n 'p' 文本名 输出全部

    按字符串查询

    sed -n '/内容/p' 文本名 

    sed -n '/内容1/,/内容2/p' 文本名

    修改文件同时备份

    sed -i .bak 's#1111111#222222#g' 文本名

    获取行号

    sed '=' 文本名 | sed 'N;s# # #'   #sed命令N读取下一行数据并附加到模式空间

    sed '=' 文本名

    sed '1,3=' 文本名

    sed '/yy/=' 文本名

    sed -n '/yy/=' 文本名

    sed -n '$=' 文本名

    取不连续的行

    sed -n '1p;3p;5p' 文本名

    sed -n '2,4p;=' 文本名

    sed -n '2,4{p;=}' 文本名

    awk

    awk [options] 'pattern {action}' file

    awk -F ":" 'NR>=2 && NR<==6 {print NR,$1}' /etc/passwd

    解释: -F 指定分隔符为冒号,相当于以 : 为菜刀,进行字段的切割

    NR>=2 && NR<=6 表示模式 条件取第二行到第六行

    {print NR, $1} 表示动作,输出NR行号和$1第一列

    awk -F ":" 'NR>=2 && NR<=6' /etc/passwd

    awk -F ":" '{print NR,$1}' 文本名

    awk -F ":" 'NR==1{print NR,$1}NR==2{print NR,$NF}' 文本名  #$NF 最后一列

    awk '{print NR,$0}' 文本名   #NR 记录号 $0 整个记录/整行

    awk 'BEGIN{RS="[ ]+"}{print $0}' 文本名   #设置RS为空格

    遇排序,去重问题

    sort -u 去重复 -n 数字排序 -r 反向逆转排序  uniq -c 计数

    awk 'BEGIN{RS="[]+"}{print $0}' 文本名 | sort | uniq -c |sort

    cat 文本名 | ttr " " " " | sort | uniq -c | sort

    grep -o "[a-zA-Z]+" 文本名 | sort | uniq -c | sort

    awk -F ":" 'NR>=2&&NR<=5{print $1,$3}' 文本名 冒号为分隔符显示第2行到第5行之间的第一区域和第三区域

    awk -F "[ ,]" '{print $3,$NF' 文本名 [ ,] 既空格或者逗号

    取ip地址

    ifconfig eth0 | awk  'NR==2' | awk -F "[ :]+" '{print $4}'

    ORS与OFS两内置变量含义

    RS输入记录分隔符,决定awk如何读取或分隔每行(记录)

    ORS输出记录分隔符,决定awk如何输出一行(记录)的

    FS输入区域分隔符 决定awk读入一行后如何再分为多个区域

    OFS输出区域分隔符,决定awk输出每个区域的时候使用什么分隔它们

    正则表达式

    ^ 字符串开头   $字符串结尾  .匹配任意单个字符  *重复0个或多个前一个字符  +重复前一个字符一次或多次  ?匹配0个或前边的字符  []匹配指定字符组内的任一个字符  [^]匹配不在指定字符组内的任一字符  ()子表达式组合   | 或者的意思  x{m} 字符重复m次  x{m,} x字符重复至少m次  x{m,n} x字符重复至少m,但不超过n次

    awk -F ":" '/^root/' 文本名  #正则表达式匹配整行

    awk -F ":" '$5~/shutdown/' 文本名  #匹配一行中的某列

    简单文本 cat >> 位置/文件名 << KOF

    awk -F "[ :]+" '$1~/^内容/{print $2,$(NF-1)}' 文本名  #-F 指定分隔符 [ :]+ 连续的空格或冒号  -F "[ :]+ 以连续的空格或冒号为分隔符   /zhang/表示条件,整行中包含内容字符的这个条件  {print 1,(NF-1)} 表示动作,满足条件后,执行显示第一列$1和倒数第二列((NF-1))当然$5也可以

    取ip地址

    ifconfig eth0 | awk 'BEGIN{RS="[ :]"} NR==31'

    ifconfig eth0 | awk -F " (addr:)|(Bcast:)" 'NR==2{print $2}'

    ifconfig eth0 | awk -F "[ :]+" 'NR==2{print $4}'

    ifconfig eth0 | awk -F "[^0~9]+" 'NR==2{print $2}'

    awk正则之{} 花括号

    awk -F: '$1~/o{1,2}/" 文本名

    awk -F: --posix '$1~/o{1,2}/' 文本名

    awk -F: --re-interval '$1~/o{1,2}/' 文本名

    取端口

    awk -F "[ /]+" '$1~/^(ssh)$|^(http)$|^(https)$|^(mysql)$|^(ftp)$/{print $1,$2)' /etc/services | sort | uniq

    awk -F ":"' $5=="root"' 文本名

    awk -F ":" '$5~/^root$/' 文本名

    awk '/^bin/,NR==5{print NR,$0}' 文本名  #以bin开头的行,到第五行的行号和整行内容

    awk -F ":" '$5~/^bin/,/^lp/{print NR,$0}' 文本名  #第五列开始以bin开头的行到以lp开头的行,显示行号及整行内容

    awk -F ":" '$5~/^bin/,$5~/^lp/{print NR,$0}' 文本名  #从第五列bin开头字符串的行到第五列lp开头字符串的行

    awk特殊模式-BEGIN,END模式

    1,内置变量定义

    取IP地址

    ifconfig eth0 | awk 'BEGIN{FS="(addr:)|(Bcast:)"} NR==2{print $2}'

    ifconfig eth0 | awk 'BEGIN{FS="[ :]+"} NR=2 {print $4}'

    ifconfig eth0 | awk 'BEGIN{NF="[^0-9.]+"} NR==2 {print $2}'

    2,输出表头

    awk -F: 'BEGIN{print "username","UID"} {print $1,$3}' 文本名

    3,特殊性质

    awk 'BEGIN{print "hello world!"}'

    awk 'BEGIN{print 10/3}'

    awk 'BEGIN{a=1;b=2;print a,b}'

    awk 'BEGIN{a=1;b=2;print a,b,a+b}'

    END模块

    统计空行

    grep "^$" 文本名 | wc -l

    grep -c "^$" 文本名

    awk '/^$/{i++}END{print i}' 文本名

    总和

    awk '{i=1+$0}END{print i}' 文本名

    计数

    awk -F "[/]+" '{i++;print $2,i}' 文本名  # i++ i最开始是空的,当awk读取一行,i自身加1

    数组替换

    awk -F "[/]+" '{h[$2]++;print $2,h["过滤的内容"]}' 文本名  # i替换成h[$2] 相当于创建了数组h[],h[$2]++就等于i++

    最终

    awk -F "[/]+" '{h[$2]++} END {for (i in h) print i,h[i]}' 文本名

  • 相关阅读:
    CLR Via CSharp读书笔记(6):类型和成员基础
    Maven 环境快速搭建二(eclipse+maven2+jetty)
    Struts2架构图
    Struts2 不依赖Spring 的测试方式
    最全的Eclipse使用快捷键
    ts2+Spring的UnitTest编写(使用StrutsTestCase的子类StrutsSpringTestCase)
    分析Vector、ArrayList、Hashtable、HashMap数据结分享一下
    Struts2与Velocity模板
    maven环境快速搭建
    转】Java集合框架学习笔记
  • 原文地址:https://www.cnblogs.com/luozhongyuan/p/9909671.html
Copyright © 2011-2022 走看看