1. 处理控制字符
$pg dos.txt
12332##DISO##45.12^M
00323##LPSO##23.11^M
01299##USPD##34.46^M
现采取以下动作:
a. 用一个空格替换所有的 ## 符号
b. 删除起始域中最前面的 0 (00)
c. 删除行尾控制字符
解决方法如下:
A. $sed 's/##*/ /g' dos.txt
B. $sed 's/^0*//g' dos.txt
C. $sed 's/^M//g' dos.txt
将所有命令合在一起:
$cat dos.txt | sed 's/##*/ /g' | sed 's/^0*//g' | sed 's/^M//g'
12332 DISO 45.12
323 LPSO 23.11
1299 USPD 34.46
关于参数g及其他一些参数的说明:
替换命令用替换模式替换指定模式, 格式为:
[address[, address]] s/pattern-to-find/replacement-pattern/[g p w n]
s 选项通知 sed 这是一个替换操作, 并查询 pattern-to-find, 成功后用 replacement-pattern 替换它.
替换选项如下:
g 缺省情况下只替换第一次出现模式,使用g选项替换全局所有出现模式。
p 缺省s e d将所有被替换行写入标准输出,加p选项将使- n选项无效。- n选项不打印输出
结果。
w 文件名使用此选项将输出定向到一个文件。
2. 将 sed 结果写入文件命令
$sed '1,2 w filedt' dos.txt
将1,2行输出到文件 filedt
$pg filedt
12332 DISO 45.12
323 LPSO 23.11
查询模式 LPSO, 匹配结果行写入文件 filedt
$sed '/LPSO/ w filedt' dos.txt
$cat filedt
阅读(1648) | 评论(1) | 转发(0) |