`
lemoncyb
  • 浏览: 50115 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

[转]linux tee命令参数及用法详解---读取输入写入文件

 
阅读更多
awk命令简介
在shell命令或编程中,可以用AWK强大的的文本处理能力。如果要格式化报文或从一个大的文本文件中抽取数据包,那么awk可完成这些任务。awk是一种解释的编程语言。awk也是shell过滤工具中最难掌握的。awk是一种自解释的编程语言。结合awk和sed和grep,将会使awk编程更加容易。
awk语言最基本的功能是在文件或字符串中基于指定的规则浏览和抽取信息。
有三种方式可调用awk.
<1>.命令行方式。
<2>.将所有的awk命令插入一个文件,并利用chmod使awk文件成为执行。
<3>.将所有的awk命令插入一个单独文件,然后调用。
以下简单介绍awk的各种方式,详细请查看相关另外文档
在awk中有四种概念。
1.抽取域
2.匹配正则表达式
3.比较域
4.向awk传递参数
以下简单介绍:
1).保存awk输出: #awk \'{print $0}\' myfile>newfile
2).使用tee,在输出到文件的同时输出到屏幕(利用管道\'|\')
     #awk \'{print $0}\' myfile |tee newfile
3).打印报告头,#awk \'BEGIN {print hello,this is Titlen---------}{print $0}\' newfile
4).打印信息尾.#awk \'BEGIN{print $0} END {end of file.}\' myfile
5).匹配,如下若在myfile第二列中带有BROWN,则打印信息
     #awk \'{if ($2~/BROWN/) print $0}\' myfile
6).精确匹配,同上,只是将~改为==
7).不匹配,有时要浏览信息并抽取不匹配操作的记录,与~相反的符号是!,如下
#awk \'$0 !~/BROWN/\' myfile
8).比较
如小于: #awk \'if ($1<$2) print $1\' myfile
9).设置大小写 #awk \'[Gg]reen/\' myfile
10).任意字符,表达式/^...a/意为前三个字符是任意字符



//-------------------------------------------------------

linux tee 命令详解


功能说明:读取标准输入的数据,并将其内容输出成文件。

语  法:tee [-ai][--help][--version][文件...]

补充说明:tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。

参  数:
 -a或--append  附加到既有文件的后面,而非覆盖它.
 -i-i或--ignore-interrupts  忽略中断信号。
 --help  在线帮助。
 --version  显示版本信息。

//--------------------------------------------------------------------------------------

Sed 命令列可分成编辑指令与文件档部份。其中 , 编辑指令负责控制所有的编辑工作 ; 文件档表示所处理的档案。

  sed 的编辑指令均由位址(address)与函数(function)两部份组成 , 其中 , 在执行时 , sed 利用它的位址参数来

  决定编辑的对象;而用它的函数参数(解[3])编辑。

  此外 , sed 编辑指令 , 除了可在命令列上执行 , 也可在档案内执行。其中差别只是在命令列上执行时 , 其前必

  须加上选项 -e ; 而在档案(解[4])内时 , 则只需在其档名前加上选项 -f。另外 , sed 执行编辑指令是依照它

  们在命令列上或档内的次序。

  下面各节 , 将介绍执行命令列上的编辑指令 、sed 编辑指令、执行档案内的编辑指令、执行多个档案的编辑、及

  执行 sed 输出控制。

  2.1 执行命令列上的编辑指令

  2.2 sed 编辑指令

  2.3 执行档案内的编辑指令

  2.4 执行多个档案的编辑

  2.5 执行 sed 输出控制

  2.1.执行命令列上的编辑指令

  当编辑指令(参照[section 2.2])在命令列上执行时 , 其前必须加上选项 -e 。其命令格式如下 :

  sed -e \'编辑指令1\' -e \'编辑指令2\' ... 文件档

  其中 , 所有编辑指令都紧接在选项 -e 之後 , 并置於两个 \' 特殊字元间。另外 , 命令上编辑指令的执行是由

  左而右。

  一般编辑指令不多时 , 使用者通常直接在命令上执行它们。例如 , 删除 yel.dat 内 1 至 10 行资料 , 并将其

  馀文字中的 yellow 字串改成 black 字串。此时 , 可将编辑指令直接在命令上执行 , 其命令如下 :

  sed -e \'1,10d\' -e \'s/yellow/black/g\' yel.dat

  在命令中 , 编辑指令 \'1,10d\'(解[5])执行删除 1 至 10 行资料 ; 编辑指令 \'s/yellow/black/g\'(解[6]) ,

  yellow 字串替换(substuite)成 black 字串。

  2.2 sed 的编辑指令

  sed 编辑指令的格式如下 :

  [address1[,address2]]function[argument]

  其中 , 位址参数 address1 、address2 为行数或 regular expression 字串 , 表示所执行编辑的资料行 ; 函数参

  数 function[argument] 为 sed 的内定函数 , 表示执行的编辑动作。

  下面两小节 , 将仔细介绍位址参数的表示法与有哪些函数参数供选择。

  2.2.1 位址(address)参数的表示法

  实际上 , 位址参数表示法只是将要编辑的资料行 , 用它们的行数或其中的字串来代替表示它们。下面举几个例子

  说明(指令都以函数参数 d(参照[section4.2]) 为例) :

  删除档内第 10 行资料 , 则指令为 10d。

  删除含有 man 字串的资料行时 , 则指令为 /man/d。

  删除档内第 10 行到第 200 行资料, 则指令为 10,200d。

  删除档内第 10 行到含 man 字串的资料行 , 则指令为 10,/man/d。

  接下来 , 以位址参数的内容与其个数两点 , 完整说明指令中位址参数的表示法(同样也以函数参数 d 为例)。

  位址参数的内容:

  位址为十进位数字 : 此数字表示行数。当指令执行时 , 将对符合此行数的资料执行函数参数指示的编辑动作。例如 ,

  删除资料档中的第 15 行资料 , 则指令为 15d(参照[section4.2])。其馀类推 ,如删除资料档中的第 m 行资料 , 则

  指令为 md 。

  位址为 regular expression(参照[附录 A]):

  当资料行中有符合 regular expression 所表示的字串时 , 则执行函数参数指示的编辑动作。另外 , 在

  regular expression 前後必须加上 /。例如指令为 /t.*t/d , 表示删除所有含两 t 字母的资料行。其中 , .

  表示任意字元; * 表示其前字元可重任意次 , 它们结合 .* 表示两 t 字母间的任意字串。

  位址参数的个数 : 在指令中 , 当没有位址参数时 , 表示全部资料行执行函数参数所指示的编辑动作; 当只有一位址

  参数时 , 表示只有符合位址的资料行才编辑 ; 当有两个位址参数 , 如 address1,address2 时 , 表示对资料区执行

  编辑 , address1 代表起始资料行 , address2 代表结束资料行。对於上述内容 , 以下面例子做具说明。

  例如指令为

  d

  其表示删除档内所有资料行。

  例如指令为

  5d

  其表示删除档内第五行资料。

  例如指令为

  1,/apple/d

  其表示删除资料区 , 由档内第一行至内有 apple 字串的资料行。

  例如指令为

  /apple/,/orange/d

  其表示删除资料区 , 由档内含有 apple 字串至含有 orange 字串的资料行

  2.2.2 有那些函数(function)参数

  下页表中介绍所有 sed 的函数参数(参照[chapter 4])的功能。

  函数参数 功能

  : label 建立 script file 内指令互相参考的位置。

  # 建立解

  { } 集合有相同位址参数的指令。

  ! 不执行函数参数。

  = 印出资料行数( line number )。

  a 添加使用者输入的资料。

  b label 将执行的指令跳至由 : 建立的参考位置。

  c 以使用者输入的资料取代资料。

  d 删除资料。

  D 删除 pattern space 内第一个 newline 字母 前的资料。

  g 拷贝资料从 hold space。

  G 添加资料从 hold space 至 pattern space 。

  h 拷贝资料从 pattern space 至 hold space 。

  H 添加资料从 pattern space 至 hold space 。

  l 印出 l 资料中的 nonprinting character 用 ASCII 码。

  i 插入添加使用者输入的资料行。

  n 读入下一笔资料。

  N 添加下一笔资料到 pattern space。

  p 印出资料。

  P 印出 pattern space 内第一个 newline 字母 前的资料。

  q 跳出 sed 编辑。

  r 读入它档内容。

  s 替换字串。

  t label 先执行一替换的编辑指令 , 如果替换成牛p>则将编辑指令跳至 : label 处执行。

  w 写资料到它档内。

  x 交换 hold space 与 pattern space 内容。

  y 转换(transform)字元。

  虽然 , sed 只有上表所述几个拥有基本编辑功能的函数 , 但由指令中位址参数和指令与指令间的配合 , 也能使

  sed 完成大部份的编辑任务。

  2.3 执行档案内的编辑指令

  当执行的指令太多 , 在命令列上撰写起来十分混乱 , 此时 , 可将这些指令整理储存在档案

  (譬如档名为 script_file )内 , 用选项 -f script_file , 则让 sed 执行 script_file 内的编辑指令。其命

  令的格示如下 :

  sed -f script_file 文件档

  其中 , 执行 script_file 内编辑指令的顺序是由上而下。例如上一节的例子 , 其可改成如下命令:

  sed -f ysb.scr yel.dat

  其中 , ysb.scr 档的内容如下 :

  1,10d

  s/yellow/black/g

  另外 , 在命令列上可混合使用选项 -e 与 -f , sed 执行指令顺序依然是由命令列的左到右, 如执行至 -f 後

  档案内的指令 , 则由上而下执行。http://www.linuxso.com/command/tee.html
2.4 执行多个文件档的编辑

  在 sed 命令列上 , 一次可执行编辑多个文件档 , 它们跟在编辑指令之後。例如 , 替换

  white.dat、red.dat、black.dat 档内的 yellow 字串成 blue , 其命令如下:

  sed -e \'s/yellow/blue/g\' white.dat red.dat black.dat

  上述命令执行时 , sed 依 white.dat、red.dat、black.dat 顺序 , 执行编辑指令 s/yellow/blue/(请参照[section 4.1] ,

  进行字串的替换。

  2.5.执行输出的控制

  在命令列上的选项 -n (解[7]) 表示输出由编辑指令控制。由前章内容得知 , sed 会 自动的 将资料由

  pattern space 输送到标准输出档。但藉着选项 -n , 可将 sed 这 自动的 的动作改成 被动的 由它所执行的

  编辑指令(解[8])来决定结果是否输出。

  由上述可知 , 选项 -n 必须与编辑指令一起配合 , 否则无法获得结果。例如 , 印出 white.dat 档内含有 white

  字串的资料行 , 其命令如下:

  sed -n -e \'/white/p\' white.dat

  上面命令中 , 选项 -n 与编辑指令 /white/p (参照[section4.6]) 一起配合控制输出。其中 , 选项 -n 将输出控制权

  移给编辑指令;/white/p 将资料行中含有 white 字串印出萤幕。

#awk \'$1~/^...a/\' myfile
11).或关系匹配,#awk \'$0~/(YELLOW || RED)/\' myfile
12).与:&& ,或:||
13).awk内置变量
<1>.要快速查看记录个数,应使用NR,如:#awk \'END {print NR}\' myfile <2>.以下使用NF变量显示每一条读记录中有多少个域,并在END部份 打印输入文件名。#awk \'{print NR,NF,$0} END {print FILENAME}\' myfile
<3>. 判断并输出 . #awk \'{if(NR>0 && $4~/BROWN/) print $0\' myfile
14).可以设置输入域到域变量名。
15).域值比较操作。
   @1.在BEGIN中给变量名赋值。通常在BEGIN部分赋值是很有益的,可以在awk表达式进行改动时减少很大麻烦.
   @2.在关系操作中使用实际数值,使用关系操作时必须用括号括起来.
#awk \'{if($6<27) print $0}\' myfile
#awk \'BEGIN {BASELINE=27}{if ($6<BASELINE) print $6}\' myfile
17).修改数据域取值
当在awk中修改任何域时,重要的一点是实际的文件可修改,改动的是cache中的awk复本,awk会在变量NR或NF中反映出修改的痕迹。
#awk \'{if($1==M.TANS)$6=$6-1;print $6}\' myfile
18).修改文本域
#awk \'{if($1==J.Troll)($1=J.L.Troll);print $1}\' myfile
19).只显示修改记录
#awk \'{if($1==J.Troll){$1=J.L.Troll;print $1}}\' myfile
20).创建新的输出域
在awk中处理数据时,基于各域进行计算的创建新域是个好的习惯。如下示例:
#awk \'BEGIN{print Name    Scoret}if($6<$7){$8=$7-$6;print $8}\' myfile
21).增加列值
#awk \'tot+=$6;END{print Club Total point. tot}\' myfile
22).使用模式打印文件名及其长度,放入变量tot中
#ls -l | awk\'/^[^d]{print $9 t $5}{tot+=$5} END {print Total KB:tot}\'
23).awk内置的字符串函数
24).awk脚本文件
如以上的所述的诸多情况,这里只不过命令放在一个文件中,且该文件必须是!/bin/awk -f ,因为这样才会使这个文件可以自解释。否则将不能作用。为了容易分别,最好将文件带一个扩展名.awk,完成对文件的编写后,再利用chmod u+x使文件可以执行。
   以上只是我在实验中的一些情况,awk命令功能很强大,大家可以参考其它的一些手册去获得更清楚的说明
http://www.linuxso.com/command/tee.html
分享到:
评论

相关推荐

    Linux tee命令用法详解

    Linux tee命令用于读取标准输入的数据,并将其内容输出成文件。 tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。 语法tee [-ai][--help][--version][文件...] 参数: -a或–append ...

    Linux tee命令使用详解

    tee命令主要被用来向standout(标准输出流,通常是命令...从man文件的定义了解 tee从标准输入流读取数据,所以这里我们使用一个简单的命令产生输出流作为tee的输入流,这里就选用ping命令, [mysql@localhost ~]$ ping

    ntee:便携式Unix shell命令“ tee”,还有一些其他功能-从标准输入中读取并写入标准输出和文件

    可移植的Unix shell命令tee ,还有一些其他功能-从标准输入中读取并写入标准输出和文件。 TL; DR gulp.dest()在管道中间? NPM脚本也可以执行以下操作: { " scripts " : { " less " : " lessc main.less | post...

    awk命令简linux_tee_命令详解Sed_命令.doc

    awk命令简linux_tee_命令详解Sed_命令.doc SHELL里面的常用命令 有助于SHELL的提高

    Linux输出信息并将信息记录到文件(tee命令)

    最近工作中遇到一个需求,需要将程序的输出写到终端,同时写入文件,通过查找相关的资料,发现可以用 tee 命令实现,首先来解释一下 tee 命令的作用: read from standard input and write to standard output and ...

    tee命令 读取标准输入的数据

    tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件 。 语法格式:tee [参数] [文件] 常用参数: -a 附加到既有文件的后面,而非覆盖它 -i 忽略中断信号 — help  查看...

    Linux dd命令用法详解

    Linux dd命令用于读取、转换并输出数据。 dd可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。 参数说明: if=文件名:输入文件名,默认为标准输入。即指定源文件。 of=...

    Linux命令搜索工具linux-command.zip

    Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。   Linux命令分类 这里存放Linux 命令大全并不全,你可以通过linux-command来搜索,它是把 command 目录里面搜集的...

    TEE_Client_API_Specification-V1.0_c.pdf

    TEE_Client_API_Specification-V1.0_c.pdf GP CA 接口说明文档

    (20200301)cat 《EOF | sudo tee /etc/yum.repos.d/influxdb.repo命令详解

    Linux tee命令用于读取标准输入的数据,并将其内容输出成文件。 tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。 tee [-ai][--help][--version][文件...] 参数:

    Linux运维-运维系统服务04-Shell脚本d1-06小工具使用tee.mp4

    Linux运维-运维系统服务04-Shell脚本d1-06小工具使用tee.mp4

    Tee命令的几个使用实例.doc

    Tee命令是一个命令行工具,它从标准输入读取数据,同时将结果打印到文件中和标准输出到屏幕中。 Tee 命令语法:tee 选项 文件名

    trustonic GP TEE 接口 API (GPD-TEE-Internal-Core-API)

    GPD_TEE_Internal_Core_API_Specification Version 1.2.1.31 [target v1.3] September 2020 最新版 包含TA的接口,TEE的功能函数说明,返回值与错误码说明等

    手机安全和可信应用开发指南:TrustZone与OP-TEE技术详解 (网络空间安全技术丛书)1

    前言致谢第一篇 基础技术篇第1章 可信执行环境1.1 系统存在的安全问题1.2 TEE如何保护数据安全1.3 现有TEE解决方案1.3.1 智能手机领域的TEE

    Linux命令大全

    很全很有用的命令收集哦,一定对你有用的... 52.tee命令:从标准输入读取并输出到标准输出和文件  53.tmpwatch命令:删除暂存文件  54.touch命令:更新文件或目录的时间  55.tree命令:以树状结构显示目录的内容

    nullpo-mod:Linux字符设备在读取或写入时导致SEGV

    关于nullpo-mod Nullpo-mod是一个Linux内核模块,它实现字符设备文件,该文件将在即将被读取或写入时导致SEGV。安装构建内核模块。 $ make加载构建的模块。 $ sudo insmod nullpo.ko用法从/ dev / nullpo读取大于或...

    linux 核心命令源码

    linux 核心命令源码(cp mv cat chgrp chown cut date df du echo env expand expr find force fs group head hostname join kill link ls mkdir mv nice od paste printf ptx rm selinux seq sleep sort split stat...

    pino-tee:tee Tee Pino登录到一个具有多个级别的文件

    (使用tee -a ./all-logs都将写入./all-logs和stdout ,从而启用更多pino传输的管道) 节点JS 您可以通过生成子进程来登录到多个文件。 在以下示例中,pino-tee将三个不同的文件写入警告,错误和致命日志级别。 ...

    TEE_Client_API_Specification-V1.0_c_watermark.pdf

    TEE_Client_API_Specification-V1.0_c.pdf GP CA 接口说明文档 Copyright C 2010 GlobalPlatform Inc. All Rights Reserved. The technology provided or described herein is subject to updates, revisions, and ...

Global site tag (gtag.js) - Google Analytics