- 论坛徽章:
- 0
|
sed 命令
---------------------------------
c [address1[,address2]]c\
text
用text代替(更改)由地址选择的行。当指定了行的范围时所有的行为座位一个整体被text的一个拷贝替代。实际上模式空间的内容被删除,并且没有后续的编辑命令可以应用到模式空间(或text)。
示例
# Replace first 100 lines in a file:
1,100\c
\
<First 100 names to be supplied>
-----------------------------
d [address1[,address2]]d
从模式空间中删除选定的行。因此该行不会被传递到标准输出。读一个新的输入行,并且用脚本中的第一个命令恢复编辑。
示例
#delete all blank lines:
/^$/d
------------------------------
D [address1[,address2]]D
删除由N命令创建的多模式空间的第一部分(直到内嵌的换行符),并且有脚本中的第一个命令重新恢复编辑。假如这个命令清空了模式空间,则读入一个新的输入行,如同执行d命令一样。
示例
#Strip multiple blank lines, leaving only one:
/^$/{
N
/^\n$/D
}
------------------------------
g [address1[,address2]]g
将保持空间中的内容粘回模式空间中,清除模式空间原先的内容。示例显示了一个拷贝行的简单方法。
示例
这个脚本收集了所有包含单词Item:的行,并且将它们拷贝到文件中一个最近的位置标记处,覆盖该位置标记:
/Item:/H
/<Replace this line with the item list>/g
--------------------------------
G [address1[,address2]]G
和g相似,只是一个换行符和保持空间被粘贴到模式空间的结尾而不是覆盖它。示例显示了一个剪切和粘贴行的简答办法。
示例
这个脚本收集了所有包含所有单词Item:的行,并且将它们移到文件中一个位置标记的后面。原先的Item:行被删除。
/Item:/{
H
d
}
/Summary of items:/G
--------------------------------
h [address1[,[address2]]h
拷贝模式空间到保持空间,即一个特殊的临时缓冲区。保持空间中原先的内容被删除。可以在编辑一行前用h去保存它。
示例
#Edit a line;print the change;replay the original
/Unix/{
h
s/.* Unix \(.*\) .*/\1:/
p
x
}
示例输入:
This describes the Unix ls command.
This describes the Unix cp command.
示例输出:
ls:
This describes the Unix ls command.
cp:
This describes the Unix cp command.
-----------------------------
H [address1[,address2]]H
追加一个换行符,然后追加模式空间的内容到保持空间中。即使保持空间是空的,H仍旧追加一个换行符。H就像是一个递增的拷贝。示例参考g和G。
------------------------------------------------------------------------ |
|