1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
phpor@phpor-Latitude-E6440:~$ echo -e "a\nb\n"|sed -n '1p' # -n 默认不输出 a phpor@phpor-Latitude-E6440:~$ echo -e "a\nb\n"|sed '$d' a b phpor@phpor-Latitude-E6440:~$ echo -e "a\nb\n"|sed '1d' b phpor@phpor-Latitude-E6440:~$ echo -e "a\nb\n"|sed '2,$d' a phpor@phpor-Latitude-E6440:~$ echo -e "a\nb\n"|sed '/a/d' b phpor@phpor-Latitude-E6440:~$ echo -e "a\nb\n"|sed '/^$/d' a b phpor@phpor-Latitude-E6440:~$ echo -e "a\nb\n"|sed '2,$d' a phpor@phpor-Latitude-E6440:~$ echo -e "a\nb\n"|sed '/a/d' b phpor@phpor-Latitude-E6440:~$ echo -e "a\nb\n"|sed '/^$/d' a b phpor@phpor-Latitude-E6440:~$ echo -e "a\nb\n"|sed 's/ //' a b phpor@phpor-Latitude-E6440:~$ echo -e "a b\nb\n"|sed 's/ //' ab b phpor@phpor-Latitude-E6440:~$ echo -e "a b c\nb\n"|sed 's/ //' ab c b phpor@phpor-Latitude-E6440:~$ echo -e "a b c\nb\n"|sed 's/ //g' abc b phpor@phpor-Latitude-E6440:~$ echo -e "a b c\nb\n"|sed 's/^a/&mm/' amm b c b phpor@phpor-Latitude-E6440:~$ echo -e "a b c a c\nb\n"|sed 's/^a/&mm/' amm b c a c b phpor@phpor-Latitude-E6440:~$ echo -e "a b c a c\nb\n"|sed 's/a/&mm/g' amm b c amm c b phpor@phpor-Latitude-E6440:~$ echo -e "a\nb\n"|sed '/a/a\ >m' a m b phpor@phpor-Latitude-E6440:~$ echo -e "a\nb\n"|sed '/a/a\ #在匹配到的行后插入新行,添加多行时,每行(除最后一行)后面都要用 \ 续行 > m\ > n\ > p' a m n p b phpor@phpor-Latitude-E6440:~$ echo -e "a\nb\n"|sed '/a/i\ #在匹配到的行前插入新行 >m\ >n\ >p' m n p a b phpor@phpor-Latitude-E6440:~$ echo -e "a\nb\n"|sed '/a/c\ #用新行替换掉匹配到的行 >m\ >n\ >p' m n p b phpor@phpor-Latitude-E6440:~$ echo -e "a1b2c3\n" |sed -e 's/a//' -e 's/b//' -e's/c//' #使用 -e 选项对统一行进行多次处理 123 phpor@phpor-Latitude-E6440:~$ echo -e "123\n456\n789\nabc" | sed -n '/456/{n;p}' #打印匹配到的那行的下一行 789 phpor@phpor-Latitude-E6440:~$ echo -e "123\n456\n789\nabc" | sed -n '/456/{n;n;p}' #打印匹配到的那行的下一行的下一行 abc phpor@phpor-Latitude-E6440:~$ echo -e "badc\n"|sed 'y/abcd/ABCD/' #该命令与UNIX/Linux中的tr命令类似,字符按照一对一的方式从左到右进行转换 BADC sed -i '/sudo route add/r /tmp/updatephplib.txt' /tmp/Vagrantfile #匹配到某一行后,把制定文件的内容append进去;注意: 1. r命令不能用在花括号中 2. 文件名后面不能有空格 |
在匹配到的行尾添加:
删除匹配后的N行(delete n lines following a pattern)or (delete n lines after match/matches)
1 2 |
echo -e "1\n2\n3\n3\n4\n"|sed '/2/,+2d' 1 |
如果匹配到的行不需要删除
正则替换:
将 “craete time: 1988-02-02 11:22:12″ 替换为”craete time: 1988-02-02T11:22:12”
1 |
sed -r 's/(-[0-9]{2})\ ([0-9]{2})/\1T\2/' |
- 使用 -r
- 反向引用
参考资料: http://blog.csdn.net/holandstone/article/details/8488434
http://stackoverflow.com/questions/4396974/sed-or-awk-delete-n-lines-following-a-pattern
http://stackoverflow.com/questions/8323287/how-can-i-use-sed-to-delete-2-lines-after-match-matches