ls | xargs sed -i '1 a namespace alipay\\aop\\request;'
stream editor
流编辑器,用程序的方式编辑文本,正则匹配模式;
行处理;;
:%s/str/string/g # vim
sed -e '/regexp/s/oldvalue/newvalue/g' filename
sed -e '' -e '' filename
sed 's/{before}/{after}/;s///' filename
sed "s/str/string/g" filename # s 替换输出,源文件不变
sed -f sed-file filename # 文本
./sed-file filename # /bin/sed
sed -i "s/aaa/bbb/g" $(grep aaa -rl .) # 替换当前目录中文件中aaa 为 bbb
sed '3s/^/#/g' filename # 第3行首加#
sed '3,6s/^/#/g' filename # 第3到6行首加#
sed 's/a/b/1' filename # 只替换每一行的第一个a -> b
sed 's/a/b/2' filename # 只替换每一行的第二个a -> b
sed 's/a/b/3g' filename # 只替换每一行的第3个之后个a -> b
sed '1,3s/a/b/g ; 3,$s/aa/bb/g' filename # 第1到3行:a -> b,第3行以后:aa -> bb
sed -e '1,3s/a/b/g' -e '3,$s/aa/bb/g' filename # 第1到3行:a -> b,第3行以后:aa -> bb # -e 执行命令
sed 's/aa/[&]/g' filename # 使用&来当做被匹配的变量,可以在基础上添加字符;
(小括号匹配):小括号扩起来的正则表达式所匹配的字符串可以当成变量来使用,sed中使用\1,\2
sed "s/a b c\([^,]*\),.*is\(.*\)/\1:\2/g" filename # a b c (hh),…… .is (ww) ;hh:ww
sed 'N;s/\n/,/' filename # 两行用,号合并为一行(奇偶);
命令:a :append ;i:insert
sed "1 i aaaaaaaaaaaa" filename # 第一行前插入 aaaaaaaaaaaa 作为第一行;
sed "1 a bbbbbbbbbbb" filename # 最后一行后追加一行 bbbbbbbbbbb 作为最后一行;
sed "$ a cccccccccccc" filename # 第一行后追加一行 cccccccccccc 作为第二行;
sed "/str/ a ddddddddd" filename # 匹配str后追加一行 ddddddddd;
c :替换匹配行
sed "2 c eeeeeeeeeee" filename # 第二行替换为 eeeeeeeeeee ;
sed "/str/ c fffffffffffffffffff" filename # 匹配str行替换为 fffffffffffffffffff;
d 删除匹配行:
sed "/str/ d" filename # 匹配str行删除;
sed "2,$ d" filename # 删除第二行以后行;
p 打印;
sed "/str/p" filename # 匹配str,并打印(2行);
sed -n "/str/p" filename # 匹配str,并打印(1行);
sed -n "/str/,/string/p" filename # 多匹配;
sed -n "1,/str/p" filename # 从第一行打印到匹配str成功的哪一行;
---------------------------------------------
^ :表示一行的开头,/^#/ 以#开头的匹配;
$:表示一行的结尾,/}$/以}结尾的匹配;
\< :表示词首,\<abc 以abc为首的词;
\>:表示词尾,abc\> 以abc结尾的词;
. : 表示任何单个字符;
*:表示某个字符出现了0或多次;
[]:字符集合,[abc]:表示匹配a或b或c;[a-zA-Z]:表示匹配所有字符;^:表示取反,[^a]:表示非a的字符;
-------------------------------
sed 's/<[^>]*>//g' 1.html # 去除<html标签>
info sed # * 回车跳转,shift+u 返回;