sed命令
时间:2019-04-29 03:17:28 来源:igfitidea点击:
什么是SED?
SED是一种流(stream )编辑器,它使您可以从文件或命令的输出中修改输入流的文本。缺省情况下,sed在大多数Linux发行版中都可用。
显示sed版本:
john@sles01:~/testing> sed --version GNU sed version 4.1.5 Copyright (C) 2003 Free Software Foundation, Inc.
sed示例
以下示例中使用了以下test.txt文件:
john@sles01:~/testing> cat test.txt one two three four five six John 246810 team01 UK Birmingham FTE Paul 135790 team02 UK Glasgow FTE Marcus 049583 team03 DE Bremen PTE Foxy 903485 team01 UK Aston PTE
使用sed进行简单的字符串替换
以下命令将搜索文件,并用string1替换string2,然后创建一个名为newfile.txt的新文件。
john@sles01:~/testing> sed 's/UK/GB/' test.txt > newfile.txt john@sles01:~/testing> cat newfile.txt one two three four five six John 246810 team01 GB Birmingham FTE Paul 135790 team02 GB Glasgow FTE Marcus 049583 team03 DE Bremen PTE Foxy 903485 team01 GB Aston PTE
在上面的例子中,我们用新的字符串GB替换了字符串UK。
提取文件的第一行
john@sles01:~/testing> sed -n '1p' test.txt one two three four five six
提取文件的第二行
john@sles01:~/testing> sed -n '2p' test.txt John 246810 team01 UK Birmingham FTE
提取文件最后一行
john@sles01:~/testing> sed -n '$p' test.txt Foxy 903485 team01 UK Aston PTE
提取文件中除第一行之外的所有行
john@sles01:~/testing> sed -n '1!p' test.txt John 246810 team01 UK Birmingham FTE Paul 135790 team02 UK Glasgow FTE Marcus 049583 team03 DE Bremen PTE Foxy 903485 team01 UK Aston PTE
从文件中提取第2、3和4行
john@sles01:~/testing> sed -n '2,4p' test.txt John 246810 team01 UK Birmingham FTE Paul 135790 team02 UK Glasgow FTE Marcus 049583 team03 DE Bremen PTE
提取包含指定字符串的行
下面的示例显示包含字符串 FTE的任何行
john@sles01:~/testing> sed -n -e '/FTE/p' test.txt John 246810 team01 UK Birmingham FTE Paul 135790 team02 UK Glasgow FTE
提取以指定字符串开头的行
下面的示例从文件中提取以字符串John开头的行。
john@sles01:~/testing> sed -n -e '/^John/p' test.txt John 246810 team01 UK Birmingham FTE
提取以指定字符串结尾的行
下面的示例提取以指定的字符串PTE结尾的行。
john@sles01:~/testing> sed -n -e '/PTE$/p' test.txt Marcus 049583 team03 DE Bremen PTE Foxy 903485 team01 UK Aston PTE
从文件中删除空白行
在此示例中,我们将删除所有空白行。我们还可以使用重定向从此输出创建一个新文件。
包含空白行的示例文件:
john@sles01:~/testing> cat test2.txt one two three four five six John 246810 team01 UK Birmingham FTE Paul 135790 team02 UK Glasgow FTE Marcus 049583 team03 DE Bremen PTE Foxy 903485 team01 UK Aston PTE
执行命令:sed -e'/^$/d' test2.txt
john@sles01:~/testing> sed -e '/^$/d' test2.txt one two three four five six John 246810 team01 UK Birmingham FTE Paul 135790 team02 UK Glasgow FTE Marcus 049583 team03 DE Bremen PTE Foxy 903485 team01 UK Aston PTE
使用重定向将输出写入新文件
john@sles01:~/testing> sed -e '/^$/d' test2.txt > test3.txt john@sles01:~/testing> cat test3.txt one two three four five six John 246810 team01 UK Birmingham FTE Paul 135790 team02 UK Glasgow FTE Marcus 049583 team03 DE Bremen PTE Foxy 903485 team01 UK Aston PTE