1. 把/etc/passwd 复制到/root/test.txt,用sed打印所有行
  2. 打印test.txt的3到10行
  3. 打印test.txt 中包含 ‘root’ 的行
  4. 删除test.txt 的15行以及以后所有行
  5. 删除test.txt中包含 ‘bash’ 的行
  6. 替换test.txt 中 ‘root’ 为 ‘toor’
  7. 替换test.txt中 ‘/sbin/nologin’ 为 ‘/bin/login’
  8. 删除test.txt中5到10行中所有的数字
  9. 删除test.txt 中所有特殊字符(除了数字以及大小写字母)
  10. 把test.txt中第一个单词和最后一个单词调换位置
  11. 把test.txt中出现的第一个数字和最后一个单词替换位置 (注:实际意思是每行的第一个数字和最后一个单词,而不是整个文件的第一个数字和最后一个单词)
  12. 把test.txt 中第一个数字移动到行末尾
  13. 在test.txt 20行到末行最前面加 ‘aaa:’
作答:
  1. cp /etc/passwd /root/test.txt cd /root sed -n '1,$'p test.txt
  2. sed -n '3,10'p test.txt
  3. sed -n '/root/'p test.txt
  4. sed '15,$'d test.txt
  5. sed '/bash/'d test.txt
  6. sed 's/root/toor/g' test.txt
  7. sed 's#/sbin/nologin#/bin/login#g' test.txt
  8. sed '5,10s/[0-9]//g' test.txt
  9. sed 's/[^ 0-9a-zA-Z]//g' test.txt
  10. sed 's/\([a-zA-Z][a-zA-Z]*\)\([^ a-zA-Z].*\)\([^ a-zA-Z]\) \([a-zA-Z][a-zA-Z]*$\)/\4\2\3\1/' test.txt
  11. sed 's/\([^ 0-9][^ 0-9]*\)\([0-9][0-9]*\)\([^ 0-9].*\)\([^ a-zA-Z]\) \([a-zA-Z][a-zA-Z]*$\)/\1\5\3\4\2/' test.txt--#该命令适用于 test.txt文件的第一个字符和最后一个字符不是数字的情况,如果test.txt文件第一个字符或最后一个字符就是数字而非字符则命令不生效,需要调整命令
day 29 sed复习
12. sed 's/\([^ 0-9][^ 0-9]*\)\([0-9][0-9*]\)\([^ 0-9].*$\)/\1\3\2/' test.txt
13. sed '20,$s/(.*)/aaa:&/' test.txt

扩展:
1、打印某行到某行之间的内容http://ask.apelearn.com/question/559
作答:sed -n '4,8'p test ---> sed -n '/\[abcfd]/,/\[rty]\/'p test #指定具体关键字
day 29 sed复习
3、sed在某一行最后添加一个数字http://ask.apelearn.com/question/288
命令:sed 's/\(^t.*\)/\1 555/' 1.txt ,也可使用:sed 's/\(^t.*\)/& 555/' 1.txt , 前面只有一个()时,可以用"&"或“\1”代替括号中的内容,
sed-r 's/(^t.*)/& 555/' 1.txt , 加“-r”选项,不需要使用脱意字符“\”
day 29 sed复习
在1.txt文件中在含有“test”的行的前面添加abc字符串,并在后面跟一个空格
命令:sed '/test/s/^/abc/' 1.txt
day 29 sed复习
在1.txt文件中在以一个asdd开头的行到以一个111开头的行的后面添加666,并在666前面加一个空格
命令:sed '/^asdd\>/,/^111\>/s/$/ abc/' 1.txt
注意,以下命令均无效,需严格匹配
sed '/^asd\>/,/^ 11\>/s/$/ abc/' 1.txt; sed -r '/^asdd>/,/^ 111>/s/$/ abc/' 1.txt
day 29 sed复习
day 29 sed复习
4、删除某行到最后一行 http://ask.apelearn.com/question/213
命令:sed '/asdd/{N;d}' 1.txt --#删除文件1.txt中匹配关键词“asdd”的行及其下一行,N表示下一行,d表示删除
day 29 sed复习
5、打印1到n行含某个字符串的行 http://ask.apelearn.com/question/1048
打印1.txt文件中2~7行中包含dddd的行,命令:sed-n '2,7{/dddd/p}' 1.txt
day 29 sed复习

相关文章:

  • 2021-10-15
  • 2021-11-08
  • 2021-10-06
  • 2022-12-23
  • 2021-04-22
  • 2021-04-29
猜你喜欢
  • 2021-04-09
  • 2021-06-28
  • 2021-08-10
  • 2022-12-23
  • 2021-12-22
  • 2022-01-24
  • 2021-12-30
相关资源
相似解决方案