【 linux命令 sed 】

sed是一个管道命令,可以分析standard input 而且sed可以将数据进行替换、删除、新增、选取的特定的功能
sed [-nefr] [动作]

  • -n 使用安静(silence)模式。在一般sed的用法中,所有来自STDIN的数据一般都会被列出到屏幕。
  • -e 直接在命令行模式上进行sed的动作编辑。
  • -f 直接将sed的动作写在一个文件内,-f filename 则可以执行filename内的sed动作
  • -r sed的动作支持的是扩展型正则表达式的语法
  • -i 直接修改读取的文件内容,而不是有屏幕输出
    动作说明:[n1,n2 动作]
    如需要在10到20行之间进行 则,“10,20[动作]”
    function 具有参数:
    a 新增,a后面接字符串,而这些字符串会在新的一行出现
    c 替换,c的后面可以接字符串,这些字符串可以替换n1,n2之间的行
    d 删除,
    i 插入,
    p 打印,
    s 替换,
    例:
    sed ‘s/①要被替换的字符串/②新的字符串/g’=====》①和②的位置可以使用正则表达式 —-2016-11-15
  1. #【编写shell脚本获取本机的网络地址】
  2. #########################################################################
  3. #!/bin/bash
  4. #Program
  5. #show ip address and network
  6. IP=$(ifconfig eth0 | grep 'inet'| grep 'Bcast'| sed 's/^.*addr://g'|sed 's/Bcast.*$//g')
  7. Mask=$(ifconfig eth0 | grep 'inet'|grep 'Bcast'| sed 's/^.*Mask://g')
  8. echo "$IP/$Mask"

【 linux命令 awk,文件按指定格式输出】

awk相当适合小型的数据数据处理,它倾向于将一行分成数个“字段”来处理。

awk ‘条件类型1 {动作1} 条件类型2 {动作2} ……’ filename
awk是以行为单位进行处理,每行都是有变量名的,分别是$1、$2等字段
awk的处理流程:

    1. 读入第一行,并将第一行数据填入1、2、$3等变量中;
    1. 依据条件类型的限制,判断是否需要进行后面的动作
    1. 做完所有的动作与条件类型
    1. 若还有后续的行数据,重复[1 - 3] 的步骤,直到所有数据都读完为止。

内置变量

  • NF:每行($0)拥有的字段数
  • NR:目前awk所处理的是"第几行"数据
  • FS:目前的分隔符,默认是空格键
  1. #【编写个shell脚本将/local目录下小于10K的文件转移到当前目录下】
  2. #########################################################################
  3. #!/bin/bash
  4. #Programing
  5. #using moving /local directory to current directory
  6. for currrentfile in $(ls -l /local| awk '$5 < 10240 {print $9}')
  7. #ll命令后 第5个变量是文件大小的数据,只要判断小于10240就表示为小于10K的文件,并且把它们显示出来。for会遍历这些文件
  8. do
  9. mv /local/$currentfile $(pwd)
  10. done
  11. ls -a $(pwd)
  12. echo "done!"

2016-11-16

【scp–remote file copy program

scp是一个远程文件拷贝命令,可以通过命令来对文件进行copy操作

如需要把A计算机 /local/sdb/aa文件夹copy到B计算机的/local/bb文件中

  1. 在A计算机上操作命令如下:
    scp -r /local/sdb/aa user@10.92.34.20:/local/bb
    然后会让输入B计算机的密码来完成操作。
  2. 或者在B计算机上把A计算机中文件“拉”过来命令如下:
    scp -r user@10.92.34.122:/local/sdb/aa /local/bb