首页 > sed如何匹配行尾的$字符?

sed如何匹配行尾的$字符?

原因是我看到这行命令

sed 's/.*$//g'

只会留下空白行而不能把行删除.

这可能说明:

  1. 命令中的$仅仅代表行尾,而并不指行尾隐藏的'$'字符
  2. 这行命令不管替换内容是什么,必须保证一行文本最后有个隐藏的'$'字符

问题:

  1. 单纯论以上两点,我这么想有错吗?
  2. 以上两点哪一点是本题的答案?或者说有第3点?

呃,'$'并不真的存在在行尾,它只是一个元字符,用来表示一行的结尾。它没有隐藏起来,因为它只是概念上的产物。
sed之所以不能把行删除,是因为sed是逐行读取的,一般情况下,它也是逐行处理的。

如果想用sed处理换行符,可以参考这个答案:
http://stackoverflow.com/questions/1251999/sed-how-can-i-replace-a-newline-n

如果想删除特定行,可以用sed 'n, md' file来删除。比如sed '1, $d' file能够删除从第一行到最后一行的内容。

【热门文章】
【热门文章】