您的位置:首页 > 其它

sed命令使用

2014-03-18 10:40 281 查看
#将文件中的英文双引号替换成英文单引号

sed 's/"'"/'"'/g' test.txt

s/+双引号+单引号+双引号+/+单引号+双引号+单引号+/g

或者

sed s#\"#\'#g test.txt

#文件中存储数据的格式是key:value,现在交换变成value:key。

sed 's/\(.*\):\(.*\)/\2:\1/' input

#将文件中的所有大写字母转换成小写字母

sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/' input

#在文件中查找包含字符串pattern的行并打印,-n表示不打印输入文件的所有行,编辑命令p表示打印匹配行。

sed -n '/pattern/p'  a.txt

#只打印第一行

sed -n '1p' a.txt

#打印第3~6行

sed -n '3,6p' a.txt

#将当前文件加下所有文件中的-m486替换成-mtune=i486

sed -i"s/-m486/-mtune=i486/g" `grep "\-m486" -rl .`

#在文件结尾添加文本

sed '$a\

End of file' input

#删除以.H1开头的行的下一行的空行,sedscript内容如下:

/^\.H1/{
n
/^$/d
}
sed -f sedscript input
#打印文件的前100行

sed '100q' input

#将文件中的多个空行变成一个

sed '/^$/{

N

/^\n$/D

}' input

#在文件中查找字符串,字符串可能跨两行

#!/bin/sh
#phrase -- search for words across lines
# $1 = search string; remaining args = filnames
search=$1
shift
for file
do
sed '
/'"$search"'/b
$!N
h
s/.*\n//
/'"$search"'/b
g
s/ *\n/ /
/'"$search"'/{
g
b
}
g
D' $file
done

注意使用变量的方式,变量两边用双引号,被Shell解释,然后再用单引号。

/'"$search"'/b在当前行匹配模式,如果匹配成功,b命令跳转到命令结尾,即输出当前行并进入下一个循环;

如果匹配失败,则执行$!N,即除了最后一行以外,读取下一行,追加到模式缓冲区中。

h将模式缓冲区中的内容拷贝到保持缓冲区中,

s/.*\n//将模式缓冲区中的第一行删除,然后/'"$search"'/b在剩下的内容,即原来的第二行中进行匹配,如果匹配成功,则直接输出并进入下一个循环;

如果匹配失败,向下执行,g将保持缓冲区内如拷贝到模式缓冲区,然后s/ *\n/ /将将第一行结尾的空格和换行符删除后,/'"$search"'/继续匹配,

如果匹配成功,g将保持缓冲区内如拷贝到模式缓冲区,b到命令结尾则输出模式缓冲区的内容后,进入下一个循环。

如果匹配失败,则g将保持缓冲区内如拷贝到模式缓冲区,然后用D删除模式缓冲区中的第一行,如果模式缓冲区中不为空,则从头开始执行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sed