sed awk grep

Sed和AWK是都是面向行的,或者说它们处理文本的方式都是一行接着一行的处理,从标准输入或者文件中读取内容,一行一行的执行脚本命令,然后打印输出到标准输出,直到文件结尾(EOF).。

Sed: 用于修改文件内容

Sed是一个流编辑器(Stream editor),它的功能在于对于一个输入流进行编辑和处理。相当于是对一个输入流进行脚本性的ed(编辑)。

用s命令替换

$cat test.txt

This is my cat my

mycat's name is betty my

This is my dog

my dog's name is frank

把其中的my字符串替换成 tammy’s,/g 表示一行上的替换所有的匹配)

$sed "s/my/tammy's/" test.txt

单引号无法通过\’这样来转义,双引号可以用\”来转义。

可直接重定向到文件或使用- i 参数直接对文件进行修改。

在每一行最前面加点东西:

$sed 's/^/XXX/g' pets.txt

在每一行最后面加点东西:s

$sed 's/$/XXX/g' pets.txt

下面的命令只替换第3到第6行的文本。

$sed "3,6s/my/your/g" pets.txt

只替换每一行的第一个s:

$sed 's/s/S/1' my.txt

只替换每一行的第二个s:

$sed 's/s/S/2' my.txt

只替换第一行的第3个以后的s:

$sed 's/s/S/3g' my.txt

顺手介绍一下正则表达式的一些最基本的东西:

^表示一行的开头。如:/^#/ 以#开头的匹配。

$表示一行的结尾。如:/}$/ 以}结尾的匹配。

\<表示词首。 如:\

\>表示词尾。 如:abc\>表示以 abc 結尾的詞。

.表示任何单个字符。

*表示某个字符出现了0次或多次。

[ ]字符集合。 如:[abc]表示匹配a或b或c,还有[a-zA-Z]表示匹配所有的26个字符。如果其中有^表示反,如[^a]表示非a的字符

多个匹配

$sed '1,3s/my/your/g; 3,$s/This/That/g' my.txt

等价于 sed-e '1,3s/my/your/g' -e '3,$s/This/That/g' my.txt

我们可以使用&来当做被匹配的变量,然后可以在基本左右加点东西。

$sed's/my/[&]/g'my.txt

This is [my]cat, [my]cat's name is betty

a命令和i命令

a命令就是append, i命令就是insert,它们是用来添加行的。如:

#其中的1i表明,其要在第1行前插入一行(insert)

$sed"1 i This is my monkey, my monkey's name is wukong"my.txt

# 其中的1a表明,其要在最后一行后追加一行(append)

$sed"$ a This is my monkey, my monkey's name is wukong"my.txt

c命令

c 命令是替换匹配行

$sed"2 c This is my monkey, my monkey's name is wukong"my.txt

d命令

删除匹配行

$sed'2d'my.txt

去除空白行

sed'/^$/d'file

awk

awk工作流程:读入有‘\n’ 换行符分割的一条记录,然后将记录按指定的与分隔符划分域,填充域,$0则表示所有域,$1则表示第一个域,$n则表示第n个域。默认域分隔符是空白键或tab键

last -n 5  仅取出前五行

仅输出第一列

last -n 5 | awk '{print $1}'

#cat /etc/passwd |awk  -F ':'  '{print $3}'

-F指定域分隔符,为‘:’

同时显示两列

#cat /etc/passwd | awk -F ':'  '{print $1"\t"$7}'

\t 表示tab键

cat /etc/passwd | awk-F':''BEGIN {print "name,shell"}  {print $1","$7} END {print "blue,/bin/nosh"}'

grep 打印匹配文本行

grep ‘字符串’ 文件名:显示文件中带有字符串的行

grep ‘字符串’ d*:显示以字母d为开头的文件中带有字符串的行

cat a.txt | grep AAA | grep -v BBB | wc - l

查找a.txt中包含AAA,但不包含BBB的文件的总数

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

推荐阅读更多精彩内容

  • sed与awk实例 文本间隔 在每一行后面增加一空行 将原来的所有空行删除并在每一行后面增加一空行。这样在输出的文...
    stuha阅读 1,901评论 0 21
  • 本文承接之前写的三十分钟学会AWK一文,在学习完AWK之后,趁热打铁又学习了一下SED,不得不说这两个工具真的堪称...
    mylxsw阅读 4,401评论 3 74
  • 为何叫做 shell ? shell prompt(PS1) 与 Carriage Return(CR) 的关系?...
    Zero___阅读 3,154评论 3 49
  • 转载 原文的排版和内容都更加友好,并且详细,我只是在这里贴出了一部分留作自己以后参考和学习,如希望更详细了解AWK...
    XKirk阅读 3,219评论 2 25
  • 文本处理工具sed sed处理文本时是以行为单位的,每处理完一行就立即打印出来,然后再处理下一行,直至全文处理结束...
    485b1aca799e阅读 2,932评论 0 4