linux输⼊写⼊⽂件命令,linuxtee命令参数及⽤法详解---读取输
⼊写⼊⽂件
awk命令简介
在shell命令或编程中,可以⽤AWK强⼤的的⽂本处理能⼒。如果要格式化报⽂或从⼀个⼤的⽂本⽂件中抽取数据包,那么awk可完成这些任务。awk是⼀种解释的编程语⾔。awk也是shell过滤⼯具中最难掌握的。awk是⼀种⾃解释的编程语⾔。结合awk和sed和grep,将会使awk编程更加容易。
awk语⾔最基本的功能是在⽂件或字符串中基于指定的规则浏览和抽取信息。
有三种⽅式可调⽤awk.
<1>.命令⾏⽅式。
<2>.将所有的awk命令插⼊⼀个⽂件,并利⽤chmod使awk⽂件成为执⾏。
<3>.将所有的awk命令插⼊⼀个单独⽂件,然后调⽤。
以下简单介绍awk的各种⽅式,详细请查看相关另外⽂档
在awk中有四种概念。
1.抽取域
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
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 字串的资料⾏。
例如指令为
shell创建文件并写入内容
/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 後档案内的指令 , 则由上⽽下执⾏。