hooyes 灵感纵容非凡

Sed & Awk

2012-09-09
hooyes

Sed

先说 sed , 这个名称来源于“stream editor”的简写。用它可以很简单快速的处理文本。

例如像这样,我们需要替换某些字符。

echo "My name is hooyes" | sed s/hooyes/jack/
# My name is jack

”s”表示替换(substitute), “/”是定界符,使用逗号,分号是等效的。

例如

echo "My name is hooyes" | sed s,hooyes,jack,
echo "My name is hooyes" | sed s:hooyes:jack:

执行了以上命令后我们看到了输出了 My name is jack

下一个例子我们看看如何用 sed 处理文本文件,首先创建一个文本文件,然后使用 sed 命令替换里面的文字。

echo "My website is https://hooyes.net" > ~/temp.txt
sed s/website/blog/ ~/temp.txt
# My blog is https://hooyes.net

我们看到了令行窗输出中website替换成了blog,但temp.txt文件没有变化;

如果想保存到新的文件:

sed s/website/blog/ ~/temp.txt > temp2.txt

如何把结果保存到原文件呢?如下:

sed -ie s/website/blog/ ~/temp.txt

Awk

awk 也是一个很有用的文本处理命令,同时它还是一门编程语言,名字来源于三个联合创始人姓氏首字母(Alfred Aho, Peter Weinberger, Brian Kernighan)。 这里不讲awk编程语言,只讲他的命令。

看一下最基本的使用,准备一个文件,然后使用 awk

ls -la > temp.txt
awk '/root/ ' temp.txt

这样我们看到,筛选出了每行里含有“root”单词的。

如果我们只想显示每行的一部分,那行如下

awk '{print $1 , $9} ' temp.txt
awk '/root/  {print $1 , $9} ' temp.txt

参考文章

Command Line Tutorials – Sed & Awk


Content
TOP