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

  • 相关阅读:
    POJ 1611 The Suspects
    POJ 2001 Shortest Prefixes(字典树)
    HDU 1251 统计难题(字典树 裸题 链表做法)
    G++ C++之区别
    PAT 乙级 1013. 数素数 (20)
    PAT 乙级 1012. 数字分类 (20)
    PAT 乙级 1009. 说反话 (20)
    PAT 乙级 1008. 数组元素循环右移问题 (20)
    HDU 6063 17多校3 RXD and math(暴力打表题)
    HDU 6066 17多校3 RXD's date(超水题)
  • 原文地址:https://www.cnblogs.com/fina/p/5819795.html
Copyright © 2011-2022 走看看