sed -n '$'!p abc.txt | tail +2 > def.txt
我在我的代码中有上面提到的sed命令 - 我无法弄清楚它的作用 - 我正在通过sed教程找到它但是我无法 - 有人可以帮我弄清楚它是什么它确实 - 谢谢
答案 0 :(得分:2)
分阶段进行:
sed -n abc.txt
“通过sed运行abc.txt
,但不要打印任何内容。”
sed -n '$!p' abc.txt
(请注意,我已经纠正了我认为错误的引号。)
“通过sed运行abc.txt
;如果一行不是最后一行,则打印它(即打印除最后一行以外的所有行)。”
我想你知道其他的,但请注意tail +2
是过时的语法 - tail -n 2
会更好。
修改:
要删除最后两行,请尝试
sed 'N;$d'
或者如果这不起作用,粗糙但有效:
sed '$d' | sed '$d'
答案 1 :(得分:2)
就sed
命令'$'!p
而言:
$
仅匹配输入文件的最后一行。!
否定了匹配的意义(因此它匹配所有但最后一行)。p
打印出匹配的内容。所以基本上这会打印除文件的最后一行以外的所有内容。
-n
选项阻止sed
执行默认操作(打印模式空间) - 如果没有,您将获得最后一行的一个副本和所有其他行的两个副本
$
周围的引号是为了阻止shell尝试将其解释为shell变量 - 我会自己引用该批次('$!p'
)但这是一个样式问题,至少在{ {1}}。其他shell如bash
(使用csh
进行命令历史检索)可能不那么宽容。