练习题解法以及不明项

回复 收藏
替换test.txt中 '/sbin/nologin' 为 '/bin/login'
       sed -r 's#(sbin/nologin)#(bin/login)#g'  text.txt

删除test.txt中5到10行中所有的数字
sed -r '5,10s#[0-9]##g' test.txt

删除test.txt 中所有特殊字符(除了数字以及大小写字母)
     sed -r 's#[^0-9a-zA-Z]##g' test.txt

把test.txt中第一个单词和最后一个单词调换位置
     sed -r 's#(^.*)(:.*:/.* )(/.*$)#\3\2\1#g' test.txt
                    :.*bin

把test.txt中出现的第一个数字和最后一个单词替换位置
  sed -r 's#(^.*:)([0-9])(:[0-9].*:/.*)(/.*$)#\1\4\3\2#g' test.txt|head -3
           这样暂时可以 但是,
sed -r 's#(^.*:)([0-9])(:.*:/.*)(/.*$)#\1\4\3\2#g' test.txt|head -3
  为什么 是把 第二个数字 和最后一个单词调换位置了
2014-12-11 06:23 举报
已邀请:
0

李昂

赞同来自:

最后一道  只针对 /etc/passwd  可以这样解   因为这文件有2个数字,  如果有 3个数字  4个数字  就不能这么 解了,
0

李昂

赞同来自:

求 破 大婶们。
0

李昂

赞同来自:

把test.txt 中第一个数字移动到行末尾

sed -r 's#(^.*:)([0-9])(:[0-9].*:/.*)($)#\1\4\3\2#g' test.txt|head -3
0

李昂

赞同来自:

在test.txt 20行到末行最前面加 'aaa:'
0

李昂

赞同来自:

最后一道真心不会
0

大自然

赞同来自:

好早啊。先看看
0

李昂

赞同来自:

最后一题
sed '20s/$/aaa/g'
0

wuhen

赞同来自:

sed -r 's#(^.*:x)(:[0-9])(:[0-9])(:.*:\/.*)(:\/.*\/.*)#\1\5\3\4\2#g' 1.txt|head -3
0

川娃子在大连

赞同来自:

这种题目答案本来就很多样,理解原理,达到目的即可。


最后4题我的做法:
sed -r 's/(^.+)(:x.*:)(\/.*$)/\3\2\1/g' test.txt
sed -r 's/(^.*x:)([0-9]{1,})(:.*\/)(.*$)/\1\4\3\2/g' test.txt
sed -r 's/(^[^0-9]{1,}:)([0-9]{1,})(:.*\/)(.*$)/\1\3\4\2/g' test.txt
sed -n '20,$s/.*/aaa&/gp' test.txt

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: