shell学习笔记(三)

1.awk

对付文字处理工作,做一些文本/数据处理,最基本功能是在文件或字符串中基于指定规则浏览和抽取信息.

1. 调用awk

第一种是命令行方式,如:

  • awk [-F fs] 'command' file这里,command是真正的awk命令。上面例子中, [-F 域分隔符]是可选的,默认使用空格作为缺省的域分隔符,这样就不用指定这个选项.
    fs是指定的分隔符,可以使用字符串或者正则表达式。例如:-F:.

  • 第二种方法是将所有awk命令插入一个文件,并使awk程序可执行,然后用awk命令解释器作为脚本的首行,以便通过键入脚本名称来调用它.

  • 第三种方式是将所有的awk命令插入一个单独文件,然后调用:
    awk -f script_file file
    -f选项指明在文件 script _ file中的a w k脚本,file是使用awk进行浏览的文件名.
    理解:
    第一种是把命令写在处理文件外面,用单引号标注;.
    第二种是把命令写在处理文件里面;
    第三种是把命令单独写成脚本,然后处理文件;

2.awk脚本

   在命令中调用awk时, awk脚本由各种操作和模式组成.
   如果设置了-F选项,则awk每次读一条记录或一行,并使用指定的分隔符分隔指定域.
   但如果未设置-F选项,awk假定空格为域分隔符,并保持这个设置直到发现一新行
   awk读取命令行上所指定的各个文件,一次读取一条记录,找到域分隔符,设置其为域n.
   再针对每一行,应用程序指定的命令.
  • 模式和动作
    任何awk语句都由模式和动作组成.
  • 模式可以是任何条件语句或复合语句或正则表达式.
    模式有两个特殊字段,BEGIN ,END.
    BEGIN语句块在awk从输入中读取行之前执行.
    这两个都是可选的语句块,变量初始化,打印输出等语句都可以写在里面;
  • END在awk从输入流读完所有的行之后进行操作.
    实际动作在大括号 { }内指明,如果不指明采取动作,awk将打印出所有浏览出来的记录.
    动作由一个或多个命令、函数、表达式组成,之间由换行符或分号分开,主要部分是变量赋值,输出命令,内置函数,控制流语句.
    模式部分决定动作语句何时触发及触发事件,处理即对数据进行的操作.如果省略模式部分,动作将时刻保持执行状态.
  • awk ’BEGIN { print "start" } pattern { command } END {print"end"}' file.
    begin end 语句块,通用模式匹配语句块,这些都是可选的.
    通用语句块是动作,没有模式部分,动作时刻执行.

  • 域和记录
    awk执行时,其浏览域标记为$1, $2 . . . $n。这种方法称为域标识。使用这些域标识将更容
    易对域进行进一步处理.$0,意即所有域.
图片3.png
图片4.png
  • 在碰到 awk错误时,可相应查找:
    • 确保整个awk命令用单引号括起来.
    • 确保命令内所有引号成对出现.
    • 确保用花括号括起动作语句,用圆括号括起条件语句.
    • 可能忘记使用花括号,也许你认为没有必要,但 awk不这样认为,将按之解释语法.

3.awk中正则表达式及其操作

awk里正则表达式用斜线括起来,例如/liu/,有点跟perl相似.
图片2.png
元字符的话,awk都可以识别使用.
awk中if后面的条件用()括起来,注意与{}区别,这个是条件表达式.  
应用 awk [-F fs]‘command’ file ,多注意括号,引号,其余正常使用正则表达式就行.
awk对域还有好几种操作,参考linux与unix shell,对于域值比较,修改域操作,增加列值,文件长度相加,还挺有帮助的.
awk还有好多字符串函数,更有效的处理文本;需要对文本处理时,可以参考.
awk里正则表达式用法格式:
图片1.png

2.输入输出(echo,read,cat,tee,printf)

  • 使用echo命令可以显示文本行或变量,或者把字符串输入到文件。它的一般形式为:
    echo string
    echo 将各个参数打印到标准输出,并以换行符结束.
    -n 不用换行符结束。
    -e 允许后面的输出进行转义.

  • read从标准输入中读取一行,并把输入行的每个字段的值传递给指定的shell变量.
    可以使用read语句从键盘或文件的某一行文本中读入信息,并将其赋给一个变量.如果只指定了一个变量,那么 read将会把所有的输入赋给该变量,直至遇到第一个文件结束符或回车.
    它的一般形式为:
    read varible1 varible2 ...
    eg:read name surname
    peng liu
    echo $name $ surname
    peng liu
    如果,变量少于字段个数,那么第一个字段被赋给第一个变量,其余的部分都赋给第二个变量.

  • cat
    显示文件内容,创建文件.
  • tee
    tee命令功能可以用字母T表示,功能是把输出的一个副本输送到标准输出,另一个副本拷贝到指定的文件里.
    sort file | tee out.txt

  • printf
    格式化输出,加强版的echo,有各种各样的格式输出.类似与c语言里的printf().
    printf函数基本语法是printf( [格式控制符],参数),格式控制字符通常在引号里.

格式控制符:

图片1.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,362评论 0 5
  • 基础命令 主要的命令和快捷键 Linux系统命令由三部分组成:cmd + [options]+[operation...
    485b1aca799e阅读 1,085评论 0 0
  • 知识点 sort uniq cut wc sed命令 awk命令 crontab定时器 sort sort 命令对...
  • awk介绍awk变量printf命令:实现格式化输出操作符awk patternawk actionawk数组aw...
    哈喽别样阅读 1,546评论 0 4
  • 一. AWK 说明 awk的处理文本和数据的方式:它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并...
    西华子阅读 923评论 0 4