英文标题:useful one-line scripts for sed (unix stream editor)
原标题:handy one-liners for sed (unix stream editor)
整理:eric pement - 电邮:pemente[at]northpark[dot]edu 版本5.5
译者:joe hong - 电邮:hq00e[at]126[dot]com
在以下地址可找到本文档的最新(英文)版本:
其他语言版本:
中文。文本间隔:
# 在每一行后面增加一空行。
sed g# 将原来的所有空行删除并在每一行后面增加一空行。
# 这样在输出的文本中每一行后面将有且只有一空行。
sed '/d;g'
# 在每一行后面增加两行空行。
sed 'g;g'
# 将第一个脚本所产生的所有空行删除(即删除所有偶数行)
sed 'n;d'
# 在匹配式样“regex”的行之前插入一空行。
sed '/regex/'
# 在匹配式样“regex”的行之后插入一空行。
sed '/regex/g'
# 在匹配式样“regex”的行之前和之后各插入一空行。
sed '/regex/'编号:
# 为文件中的每一行进行编号(简单的左对齐方式)。这里使用了“制表符”
# (tab,见本文末尾关于'\t'的用法的描述)而不是空格来对齐边缘。
sed = filename | sed 'n;s//\t/'
# 对文件中的所有行编号(行号在左,文字右端对齐)。
sed = filename | sed 'n; ss/ *n/\1 /'
# 对文件中的所有行编号,但只显示非空白行的行号。
sed '/filename | sed '/n; s// /
# 计算行数 (模拟 "wc -l")
sed -n '$
文本转换和替代:
# unix环境:转换dos的新行符(cr/lf)为unix格式。
sed 's假设所有行以cr/lf结束。
sed 's/^m在bash/tcsh中,将按ctrl-m改为按ctrl-v
sed 's/\x0dssed、gsed 3.02.80,及更高版本。
# unix环境:转换unix的新行符(lf)为dos格式。
sed "s/$/echo -e \在ksh下所使用的命令。
sed 's/$'echo \在bash下所使用的命令。
sed "s/$/echo \在zsh下所使用的命令。
sed 's/$/rgsed 3.02.80 及更高版本。
# dos环境:转换unix新行符(lf)为dos格式。
sed "s方法 1
sed -n p方法 2
# dos环境:转换dos新行符(cr/lf)为unix格式。
# 下面的脚本只对unxutils sed 4.0.7 及更高版本有效。要识别unxutils版本的。
# sed可以通过其特有的“--text”选项。你可以使用帮助选项(“-help”)看。
# 其中有无一个“--text”项以此来判断所使用的是否是unxutils版本。其它dos
# 版本的的sed则无法进行这一转换。但可以用“tr”来实现这一转换。
sed "s///"infile >outfile # unxutils sed v4.0.7 或更高版本。
tr -d outfilegnu tr 1.22 或更高版本。
# 将每一行前导的“空白字符”(空格,制表符)删除。
# 使之左对齐。
sed 's/^[t见本文末尾关于'\t'用法的描述。
# 将每一行拖尾的“空白字符”(空格,制表符)删除。
sed 's/[ t见本文末尾关于'\t'用法的描述。
# 将每一行中的前导和拖尾的空白字符删除。
sed 's/^[t]*/s/[ t]*$
# 在每一行开头处插入5个空格(使全文向右移动5个字符的位置)
sed 's
# 以79个字符为宽度,将所有文本右对齐。
sed -e :a -e 's/^.ta' # 78个字符外加最后的一个空格。
# 以79个字符为宽度,使所有文本居中。在方法1中,为了让文本居中每一行的前。
# 头和后头都填充了空格。 在方法2中,在居中文本的过程中只在文本的前面填充。
# 空格,并且最终这些空格将有一半会被删除。此外每一行的后头并未填充空格。
sed -e :a -e 's/^.ta方法1
sed -e :a -e 's/^.ta' -e 's/\(1/\1/' # 方法2
# 在每一行中查找字串“foo”,并将找到的“foo”替换为“bar”
sed 's/foo/bar只替换每一行中的第一个“foo”字串。
sed 's/foo/bar/4只替换每一行中的第四个“foo”字串。
sed 's/foo/bar/g将每一行中的所有“foo”都换成“bar”
sed 's/\(foo\(.foo\)/1bar\2/' # 替换倒数第二个“foo”
sed 's/\(foo/\1bar替换最后一个“foo”
# 只在行**现字串“baz”的情况下将“foo”替换成“bar”
sed '/baz/s/foo/bar/g'
# 将“foo”替换成“bar”,并且只在行中未出现字串“baz”的情况下替换。
sed '/baz/!s/foo/bar/g'
# 不管是“scarlet”“ruby”还是“puce”,一律换成“red”
sed 's/scarlet/red/g;s/ruby/red/g;s/puce/red/g' #对多数的sed都有效。
gsed 's/scarlet\|ruby\|puce/red/g只对gnu sed有效。
# 倒置所有行,第一行成为最后一行,依次类推(模拟“tac”)。
# 由于某些原因,使用下面命令时hhsed v1.5会将文件中的空行删除。
sed '1!g;h;$!d方法1
sed -n '1!g;h;$p方法2
# 将行中的字符逆序排列,第一个字成为最后一字,……模拟“rev”)
sed '/n/!g;sn\)/2\1/;/d;s/./
# 将每两行连接成一行(类似“paste”)
sed '$n;s// /
# 如果当前行以反斜杠“\”结束,则将下一行并到当前行末尾。
# 并去掉原来行尾的反斜杠。
sed -e :a -e '/n; s/\//;ta'
# 如果当前行以等号开头,将当前行并到上一行末尾。
# 并以单个空格代替原来行头的“=”
sed -e :a -e '$n;s/=/ ta' -e 'p;d'
# 为数字字串增加逗号分隔符号,将“1234567”改为“1,234,567”
gsed ':a;s/\b[0-9]\\tagnu sed
sed -e :a -e 's/\(0-9]\)0-9]\\1,\2/;ta' # 其他sed
# 为带有小数点和负号的数值增加逗号分隔符(gnu sed)
gsed -r ':a;s/(^0-9.])0-9]+)0-9])/1\2,\3/g;ta'
# 在每5行后增加一空白行 (在第5,10,15,20,等行后增加一空白行)
gsed '0~5g只对gnu sed有效。
sed 'n;n;n;n;g其他sed
选择性地显示特定行:
# 显示文件中的前10行 (模拟“head”的行为)
sed 10q
# 显示文件中的第一行 (模拟“head -1”命令)
sed q# 显示文件中的最后10行 (模拟“tail”)
sed -e :a -e '$q;n;11,$d;ba'
# 显示文件中的最后2行(模拟“tail -2”命令)
优化训练模式
优化训练模式提高训练效率。一一教学技能微格训练模式实验报告。潘魁英王雪光。一 问题综述。21世纪综合国力的竞争实质是人才的竞争,而人。才的竞争,归根结蒂是教育的竞争。要办好教育,教师。是关键,师范教育则是关键之关键。所以师范学校必。须全面提高师范生的综合素质,尤其是要改善 提高。师范生的课堂教学技能...
四年级简单行程应用题训练
1 一辆汽车每小时行驶50千米,从甲城到乙城行驶了18小时,从甲城到乙城的路程是多少?2 小芬上学步行的速度是70米 分,她从家到学校要走19分钟。小玲上学步行的速度是75米 分,她从家到学校要走20分钟。两人上学各要走多少米?若小芬家 小玲家及学校在同一路上,从小芬家到小玲家要走多少米?3 一辆汽...
作文模式训练反思
刊 益华。目前的新材料作文写作中,绝大部分同学选择写作议有优劣高下之分,各种模式均有其优点与局限性 并列式 而几乎所有的议 又长着同一个模样。综观历年分论点明确,结构清晰,缺点是可以无限制并列下去,容。高考优作,几乎看不出有什么模式,又似乎一篇文章中有易做成空洞的文化大散文 正反对照式从正反两个层面...