sed的打印指令p的一点疑惑

590阅读 0评论2010-03-10 greendays
分类:

[] [] [] []

书上的一个例子:
cat sed31.txt
.Ah "Comment"
.Ah "Substitution"
.Ah "Delete"
.Ah "Append, Insert and Change"
.Ah "List"
this line is out!
如果我用脚本直接运行:
sed '/^\.Ah/{
> p
> s/"//g
> s/^\.Ah //p
> }' sed31.txt
.Ah "Comment"
Comment
Comment
.Ah "Substitution"
Substitution
Substitution
.Ah "Delete"
Delete
Delete
.Ah "Append, Insert and Change"
Append, Insert and Change
Append, Insert and Change
.Ah "List"
List
List
this line is out!
如果我用脚本文件运行:
cat sed3.sh
/^\.Ah/{
p
s/"//g
s/^\.Ah //p
}

sed -f sed3.sh sed31.txt
.Ah "Comment"
Comment
.Ah "Substitution"
Substitution
.Ah "Delete"
Delete
.Ah "Append, Insert and Change"
Append, Insert and Change
.Ah "List"
List

为什么会有这个差异?
请高人指点!


| | |

回复 alfred1980


    在同一个环境下运行的?
alias 输出什么?
__________________________________

LIVE FREE OR DIE!     K.I.S.S.  DRY



| | |

同一个环境下
alias后的结果是:
autoload='typeset -fu'
chmod=/usr/bin/chmod
command='command '
functions='typeset -f'
hash='alias -t -'
history='fc -l'
integer='typeset -i'
la='ls -a'
ll='ls -l'
local=typeset
ls=/usr/bin/ls
nohup='nohup '
r='fc -e -'
sed=/usr/bin/sed
stop='kill -STOP'
suspend='if [[ ${0#-} = $0 ]] ; then kill -STOP $$; else dspmsg -s 1 ksh.cat SUSPEND "suspend: cannot suspend login shell
"; fi '
type='whence -v'
vi=/usr/bin/vi


| | |

从结果看,第二个命令使用了-n选项。

应该是你自己弄错了。
__________________________________

LIVE FREE OR DIE!     K.I.S.S.  DRY



| | |

我这里一切正常
$ sed -f sed3.sh sed31.txt
.Ah "Comment"
Comment
Comment
.Ah "Substitution"
Substitution
Substitution
.Ah "Delete"
Delete
Delete
.Ah "Append, Insert and Change"
Append, Insert and Change
Append, Insert and Change
.Ah "List"
List
List
this line is out!
__________________________________


| | |

2.png 1.png

黑哥,我没搞错了!!!


| | |

痛苦啊!


| | |

回复 alfred1980


    你贴上来的代码和你运行的代码完全一样?
__________________________________

LIVE FREE OR DIE!     K.I.S.S.  DRY



| | |

检查你的脚本文件第一行是不是"#n"这样的注释行。
__________________________________

LIVE FREE OR DIE!     K.I.S.S.  DRY



| | |

痛苦都是自找的,别人无法让你痛苦。
__________________________________

LIVE FREE OR DIE!     K.I.S.S.  DRY



| | |
  » » »
  快速回复主题
[] [] [] []

对!
难道是#n造成的?

果然是,为什么啊?


| | |
上一篇:'^SY' 正则表达式的疑惑!
下一篇:vim一个文件 里面有许多^H