Linux 中的文本处理替换命令主要有 sed
和 awk
,它们都是强大的文本处理工具,可以用于查找、替换、删除文本中的特定内容。
sed
是一个流编辑器(Stream Editor),用于对输入流(文件或管道)进行基本的文本转换。
sed
命令的基本格式如下:
sed [选项] '动作' 文件名
常用的选项有 -n
(安静模式,只输出经过处理的行)、-e
(允许多项编辑)、-i
(直接修改文件内容)等。
动作通常是一个地址范围和一个命令的组合,例如 s/old/new/
表示替换操作。
s/old/new/
d
i\ 文本
a\ 文本
替换文件 example.txt
中所有的 "foo" 为 "bar":
sed 's/foo/bar/g' example.txt
直接在文件中进行替换(谨慎使用,因为会直接修改原文件):
sed -i 's/foo/bar/g' example.txt
awk
是一种编程语言,而 awk
命令是基于这种语言的工具,用于处理文本文件。
awk
命令的基本格式如下:
awk '程序' 文件名
程序通常包含模式和动作,例如 /pattern/ { action }
。
$1, $2, ...
if (condition) { action }
for (i in array) { action }
打印文件 example.txt
中每一行的第二个字段:
awk '{ print $2 }' example.txt
根据条件替换字段值:
awk '$1 == "key" { $2 = "value" }1' example.txt
-i
选项直接修改文件,但没有备份原文件。-i
选项时,可以先复制一份原文件作为备份,或者在命令中加入备份后缀,如 sed -i.bak 's/foo/bar/g' example.txt
。grep
、cut
等进行预处理。通过掌握这些基础概念和技巧,你可以更加高效地在 Linux 环境中进行文本处理工作。
领取专属 10元无门槛券
手把手带您无忧上云