zoukankan      html  css  js  c++  java
  • Day4-Expec+sed

    Day4-Expec+sed

    Expect 编程语言——变量 函数 流程控制 数组
    把交互操作通过非交互的方式完成
    #!/usr/bin/expect
    spawn 触发交互式操作
    spawn ftp 192.168.100.100
    Expect "捕获的数据" 捕获命令执行时,输出的数据,捕获到为成功
    Expect "password:"
    send "命令" expect捕获到指定的数据后,发送指令
    send "password"

    #!/usr/bin/expect
    set ip "192.168.100.100"
    set username "ftp"
    set password ""
    set path [ lindex $argv 0 ]
    set path [ lindex $argv 1 ]
    spawn ftp $ip
    Expect "Name"
    send "$username
    "
    Expect "Password:"
    send "$password
    "
    Expect "ftp>"
    send "cd test
    "
    Expect "ftp>"
    send "lcd $path
    "
    Expect "ftp>"
    send "put $file
    "
    Expect "ftp>"
    send "bye"
    

    sed——非交互式的文件编辑器——文件
    打印 输入文件内容 删除 添加 修改 导入 导出 复制 剪切

    命令格式
    sed 选项 '动作' 文件名
    命令|sed [选项] '动作'
    执行过程——以行为处理单位 逐行处理,把当前行的处理结果默认输出到屏幕,然后自动处理下一行,直到把文件中的所有行处理完为止
    工作原理
    模式空间——处理文件时,把文件中的行 拷贝到自己的模式空间,然后用动作对模式空间里的行做处理,把处理结果输出到屏幕上,默认把模式空间的源数据输出
    保持空间——默认只存储一个换行符号
    存放到保持空间里的行不会被sed处理——只是一个临时存储文件中行的空间
    条件表示方式
    行号
    /正则表达式/
    选项 -i 对原文件进行操作
    动作
    打印 p

    #sed –n 'p' file
    #sed –n '1p' file
    #sed –n '$p' file
    #sed –n '1p;3p' file
    #sed –n '2,4p' file
    #sed –n '/n/p' file
    #sed –n '/^r/p' file
    #sed –n '/^$/p' file

    删除 d 以行为单位
    #sed 'd' file
    #sed '/^$/d' file

    添加行 以行为单位添加行——没有空行不处理
    当前行的下方添加新行 a
    当前行的上方添加新行 i
    替换 以行为替换单位
    #c
    替换 替换一行中的部分数据
    #sed -i 's/源数据/新数据' 文件名
    #sed -i '条件s/源数据/新数据/替换选项' 文件名
    条件的表示方式——行号——/正则表达式/
    替换选项g——全局 i——忽略字母大小写
    源数据表示方式——可以使用匹配字符表示、也是使用正则表达式
    -r 忽略正则表达式符号
    () 后向引用——把源数据保存起来,在替换的时候使用
    () () () () () () () () ()
    1 2 3 4 5 6 7 8 9
    & 保存替换时的源字符串
    把当前系统最好后一个用户的shell修改为/sbin/nologin
    sed -i '$s//bin/bash//sbin/nologin/' /etc/passwd
    自定义替换时的间隔符
    sed -i '$s;/bin/bash;/sbin/nologin;' /etc/passwd
    sed -i '$s#/bin/bash#/sbin/nologin#' /etc/passwd
    导入数据 r 把其他文件的内容读取到当前文件里
    sed '条件r file1' file2 将file1文件内容读到file2文件里
    sed -i 'r file1' file2
    sed -i '$r file1' file2
    导出数据 w 把当前文件的内容写到另一个文件里——相当于另存为
    sed -i 'w file1' file2 将file1文件内容保存到file2文件里
    sed -i '条件w file1' file2
    sed -i '/a/w /path/file1' file2 字母为a覆盖导入
    sed -i '1,2w file1' file2
    模式空间
    追加 H
    覆盖 h
    保持空间
    追加 G
    覆盖 g
    复制
    把文件的前2行复制到文件的末尾
    sed '1h;2H;$G' file

    剪切
    把文件的前2行剪切到文件的末尾
    sed '1h;2H;1,2d;$G' file

    命令组合键{}
    sed -n '3=;3p' file
    sed -n '3{=;p}' file

    -f 调用sed文件对数据做处理
    sed -f xxx.sed file
    sed 流控函数
    取反 !
    把当前行的下一行读取到模式空间 n

  • 相关阅读:
    tensorflow源码解析之framework-shape_inference
    tensorflow源码解析之framework-function
    tensorflow源码解析之framework-device
    时间之外的往事
    字段初始值无法引用非静态字段、方法或属性“ ”
    第六期新人助跑感悟
    java volatile
    spring aop
    jvm类加载机制
    redis 集群 sharding策略
  • 原文地址:https://www.cnblogs.com/fina/p/5819795.html
Copyright © 2011-2022 走看看