原因是我看到这行命令 sed 's/.*$//g' 只会留下空白行而不能把行删除. 这可能说明: 命令中的$仅仅代表行尾,而并不指行尾隐藏的'$'字符 这行命令不管替换内容是什么,必须保证一行文本最后有个隐藏的'$'字符 问题: 单纯论以上两点,我这么想有错吗? 以上两点哪一点是本题的答案?或者说有第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能够删除从第一行到最后一行的内容。
呃,'$'并不真的存在在行尾,它只是一个元字符,用来表示一行的结尾。它没有隐藏起来,因为它只是概念上的产物。
sed
之所以不能把行删除,是因为sed
是逐行读取的,一般情况下,它也是逐行处理的。如果想用
sed
处理换行符,可以参考这个答案:http://stackoverflow.com/questions/1251999/sed-how-can-i-replace-a-newline-n
如果想删除特定行,可以用
sed 'n, md' file
来删除。比如sed '1, $d' file
能够删除从第一行到最后一行的内容。