sed和gawk

sed和gawk

sed

对输入执行字符串替换

s命令会用斜线间指定的第二个文本字符串来替换第一个文本字符串模式。在本例中是big test替换了test。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

sed编辑器并不会修改文本文件的数据。
它只会将修改后的数据发送到STDOUT。
如果你查看原来的文本文件,它仍然保留着原始数据。
要在sed命令行上执行多个命令时,只要用-e选项就可以了。
$ sed -e ‘s/brown/green/; s/dog/cat/’ data1.txt
两个命令都作用到文件中的每行数据上。命令之间必须用分号隔开,并且在命令末尾和分号之间不能有空格。
也可以这样
有大量要处理的sed命令,那么将它们放进一个单独的文件中通常会更方便一些。可以在sed命令中用-f选项来指定文件。
	$ cat script1.sed
	s/brown/green/
	s/fox/elephant/
	s/dog/cat/
	
	$ sed -f script1.sed data1.txt
	The quick green elephant jumps over the lazy cat.
	The quick green elephant jumps over the lazy cat.
	The quick green elephant jumps over the lazy cat.
	The quick green elephant jumps over the lazy cat.
	$

	$ sed ‘s/test/trial/2’ data4.txt
	将替换标记指定为2的结果就是: sed编辑器只替换每行中第二次出现的匹配模式。
	g替换标记使你能替换文本中匹配模式所匹配的每处地方。
	$ sed ‘s/test/trial/g’ data4.txt

	p替换标记会打印与替换命令中指定的模式匹配的行。
	这通常会和sed的-n选项一起使用。

	$ cat data5.txt
	This is a test line.
	This is a different line.
	$
	$ sed -n ‘s/test/trial/p’ data5.txt
	This is a trial line.
	$
	-n选项将禁止sed编辑器输出。
	但p替换标记会输出修改过的行。
	将二者配合使用的效果就是只输出被替换命令修改过的行。

	w替换标记会产生同样的输出,不过会将输出保存到指定文件中。
	$ sed ‘s/test/trial/w test.txt’ data5.txt
	This is a trial line.
	This is a different line.
	$
	$ cat test.txt
	This is a trial line.
	$

	sed编辑器允许选择其他字符来作为替换命令中的字符串分隔符:
	$ sed ‘s!/bin/bash!/bin/csh!/etc/passwd
	在这个例子中,感叹号被用作字符串分隔符,这样路径名就更容易阅读和理解了。

	$ sed ‘2s/dog/cat/’ data1.txt
	sed编辑器只修改地址指定的第二行的文本。
	$ sed ‘2,3s/dog/cat/’ data1.txt
	修改第二、三行的文本。
	如果想将命令作用到文本中从某行开始的所有行,可以用特殊地址——美元符。
	$ sed ‘2,$s/dog/cat/’ data1.txt

gawk

gawk程序脚本用一对花括号来定义。你必须将脚本命令放到两个花括号( {})中。
$ gawk ‘{print “Hello World!”}’
如果你输入一行文本并按下回车键, gawk会对这行文本运行一遍程序脚本。跟sed编辑器一样,
 gawk程序会针对数据流中的每行文本执行程序脚本。
 由于程序脚本被设为显示一行固定的文本字符串,
 因此不管你在数据流中输入什么文本,都会得到同样的文本输出。
Ctrl+D组合键会在bash中产生一个EOF字符。这个组合键能够终止该gawk
程序并返回到命令行界面提示符下。
 $0代表整个文本行;
 $1代表文本行中的第1个数据字段;
 $2代表文本行中的第2个数据字段;
 $n代表文本行中的第n个数据字段。
	$ cat data2.txt
	One line of test text.
	Two lines of test text.
	Three lines of test text.
	$
	$ gawk ‘{print $1}’ data2.txt
	One
	Two
	Three
	$

	$ echo “My name is Rich” | gawk ‘{$4=“Christine”; print $0}’
	My name is Christine
	$

	第一条命令会给字段变量$4赋值。
	第二条命令会打印整个数据字段。
	注意, gawk程序在输出中已经将原文本中的第四个数据字段替换成了新值。

参考

1. https://blog.csdn.net/qq_44710568/article/details/104961942
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

raindayinrain

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值