博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sed 流编辑器的特殊应用( 转载 )
阅读量:4053 次
发布时间:2019-05-25

本文共 2022 字,大约阅读时间需要 6 分钟。

 
300. 特殊应用:
 
301. --------
 
302.
 
303. # 移除手册页(man page)中的nroff标记。在Unix SystemV或bash shell下使
 
304. # 用'echo'命令时可能需要加上 -e 选项。
 
305. sed "s/.`echo\\\b`//g" 
 
 
#外层的双括号是必须的(Unix环境)
 
306. sed's/.^H//g' 
 
 
 
 
 
 
 
 
 
 
 
# 在bash或tcsh中, 按 Ctrl-V 再按 Ctrl-H
 
307. sed's/.\x08//g' 
 
 
 
 
 
 
 
 
 
# sed 1.5,GNU sed,ssed所使用的十六进制的表示方法
 
308.
 
309. # 提取新闻组或 e-mail 的邮件头
 
310. sed'/^$/q' 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
# 删除第一行空行后的所有内容
 
311.
 
312. # 提取新闻组或 e-mail 的正文部分
 
313. sed'1,/^$/d' 
 
 
 
 
 
 
 
 
 
 
 
 
# 删除第一行空行之前的所有内容
 
314.
 
315. #从邮件头提取“Subject”(标题栏字段),并移除开头的“Subject:”字样
 
316. sed '/^Subject: */!d; s///;q'
 
317.
 
318. # 从邮件头获得回复地址
 
319. sed '/^Reply-To:/q; /^From:/h;/./d;g;q'
 
320.
 
321. # 获取邮件地址。在上一个脚本所产生的那一行邮件头的基础上进一步的将非电邮
 
322. # 地址的部分剃除。(见上一脚本)
 
323. sed 's/ *(.*)//; s/>.*//;s/.*[:<] *//'
 
324.
 
325. # 在每一行开头加上一个尖括号和空格(引用信息)
 
326. sed 's/^/> /'
 
327.
 
328. # 将每一行开头处的尖括号和空格删除(解除引用)
 
329. sed 's/^> //'
 
330.
 
331. # 移除大部分的HTML标签(包括跨行标签)
 
332. sed -e :a -e's/<[^>]*>//g;/</N;//ba'
 
333.
 
334. #将分成多卷的uuencode文件解码。移除文件头信息,只保留uuencode编码部分。
 
335. #文件必须以特定顺序传给sed。下面第一种版本的脚本可以直接在命令行下输入;
 
336. # 第二种版本则可以放入一个带执行权限的shell脚本中。(由RahulDhesi的一
 
337. # 个脚本修改而来。)
 
338. sed '/^end/,/^begin/d' file1 file2 ... fileX| uudecode 
 
# vers. 1
 
339. sed '/^end/,/^begin/d' "$@" |uudecode 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
# vers. 2
 
340.
 
341. # 将文件中的段落以字母顺序排序。段落间以(一行或多行)空行分隔。GNUsed使用
 
342. #字元“\v”来表示垂直制表符,这里用它来作为换行符的占位符——当然你也可以
 
343. # 用其他未在文件中使用的字符来代替它。
 
344. sed '/./{H;d;};x;s/\n/={NL}=/g' file | sort| sed '1s/={NL}=//;s/={NL}=/\n/g'
 
345. gsed '/./{H;d};x;y/\n/\v/' file | sort | sed'1s/\v//;y/\v/\n/'
 
346.
 
347. # 分别压缩每个.TXT文件,压缩后删除原来的文件并将压缩后的.ZIP文件
 
348. # 命名为与原来相同的名字(只是扩展名不同)。(DOS环境:“dir /b”
 
349. # 显示不带路径的文件名)。
 
350. echo @echo off>zipup.bat
 
351. dir /b *.txt | sed "s/^\(.*\)\.TXT/pkzip -mo\1 \1.TXT/" >>zipup.bat
 
352.
 
353.
 
354.使用SED:Sed接受一个或多个编辑命令,并且每读入一行后就依次应用这些命令。
 
355. 当读入第一行输入后,sed对其应用所有的命令,然后将结果输出。接着再读入第二
 
356. 行输入,对其应用所有的命令……并重复这个过程。上一个例子中sed由标准输入设
 
357. 备(即命令解释器,通常是以管道输入的形式)获得输入。在命令行给出一个或多
 
358.个文件名作为参数时,这些文件取代标准输入设备成为sed的输入。sed的输出将被
 
359. 送到标准输出(显示器)。因此:
 
360.
 
361. cat filename | sed'10q' 
 
 
 
 
 
 
 
# 使用管道输入
 
362. sed '10q'filename 
 
 
 
 
 
 
 
 
 
 
 
 
 
# 同样效果,但不使用管道输入
 
363. sed '10q' filename >newfile 
 
 
 
# 将输出转移(重定向)到磁盘上
 
364.

转载地址:http://cmaci.baihongyu.com/

你可能感兴趣的文章
MongoDB基本使用
查看>>
mongodb管理与安全认证
查看>>
nodejs内存控制
查看>>
nodejs Stream使用中的陷阱
查看>>
MongoDB 数据文件备份与恢复
查看>>
数据库索引介绍及使用
查看>>
MongoDB数据库插入、更新和删除操作详解
查看>>
MongoDB文档(Document)全局唯一ID的设计思路
查看>>
mongoDB简介
查看>>
Redis持久化存储(AOF与RDB两种模式)
查看>>
memcached工作原理与优化建议
查看>>
Redis与Memcached的区别
查看>>
redis sharding方案
查看>>
程序员最核心的竞争力是什么?
查看>>
Node.js机制及原理理解初步
查看>>
linux CPU个数查看
查看>>
分布式应用开发相关的面试题收集
查看>>
简单理解Socket及TCP/IP、Http、Socket的区别
查看>>
利用HTTP Cache来优化网站
查看>>
利用负载均衡优化和加速HTTP应用
查看>>