关于sed的
发表于 : 2007-12-11 16:31
小弟刚学脚本,想请教一下下面这句什么意思,谢谢。
sed -n "s/\ *[0-9][0-9]*\ *[0-9][0-9]*\ *[0-9][0-9][0-9]*\ \([a-z]*[0-9][0-9]*\)/\1/p"
sed -n "s/\ *[0-9][0-9]*\ *[0-9][0-9]*\ *[0-9][0-9][0-9]*\ \([a-z]*[0-9][0-9]*\)/\1/p"
前面一段配匹了一堆空格+数字+字母的东东,有什么不太明白的呢?loogson 写了:\1 替代 [a-z]*[0-9][0-9]* ?
可sed -n "s/\ *[0-9][0-9]*\ *[0-9][0-9]*\ *[0-9][0-9][0-9]*\ \([a-z]*[0-9][0-9]*\)/\1/p" /proc/partitions 得到的是分区名呀?我主要是不太明白这前面一段是什么意思
代码: 全选
awk '{print $4}' /proc/partitions
geexbox里的,我也觉得写这脚本的人有点牛X,呵。请教一下/p前面的\1是什么意思?aBiNg 写了:前面一段配匹了一堆空格+数字+字母的东东,有什么不太明白的呢?loogson 写了:\1 替代 [a-z]*[0-9][0-9]* ?
可sed -n "s/\ *[0-9][0-9]*\ *[0-9][0-9]*\ *[0-9][0-9][0-9]*\ \([a-z]*[0-9][0-9]*\)/\1/p" /proc/partitions 得到的是分区名呀?我主要是不太明白这前面一段是什么意思
要得到分区名,直接awk不就行了?这sed用的,牛x了点,呵呵。代码: 全选
awk '{print $4}' /proc/partitions
pattern-to-find=loogson 写了:geexbox里的,我也觉得写这脚本的人有点牛X,呵。请教一下/p前面的\1是什么意思?aBiNg 写了:前面一段配匹了一堆空格+数字+字母的东东,有什么不太明白的呢?loogson 写了:\1 替代 [a-z]*[0-9][0-9]* ?
可sed -n "s/\ *[0-9][0-9]*\ *[0-9][0-9]*\ *[0-9][0-9][0-9]*\ \([a-z]*[0-9][0-9]*\)/\1/p" /proc/partitions 得到的是分区名呀?我主要是不太明白这前面一段是什么意思
要得到分区名,直接awk不就行了?这sed用的,牛x了点,呵呵。代码: 全选
awk '{print $4}' /proc/partitions
我看sed替换的格式是 s/ pattern-to-find /replacement-pattern/ 所以不知道上面哪些是pattern-to-find 哪块是replacement-pattern,别见笑,我刚学脚本,希望指教,谢谢
代码: 全选
\ *[0-9][0-9]*\ *[0-9][0-9]*\ *[0-9][0-9][0-9]*\ \([a-z]*[0-9][0-9]*\)
代码: 全选
\1
代码: 全选
sed -nr "s/^(\s+\S+){3}\s+(\S+)/\2/p" /proc/partitions
*=0..nloogson 写了:有点明白了,谢谢。
还有一点不明白,[0-9][0-9]不是指两位数字吗?那[a-z]*[0-9][0-9]*怎么会匹配sda1呢?sda1不是只有一位数字?希望赐教,谢谢。
另外,echo "1111122223333"|sed "s/*/test/"不知怎么没有实现我的本意:将字符替换成test,后来查到必需是echo "1111122223333"|sed "s/.*/test/"加了个点,不知为什么?