如何使用Unix删除代码特定的代码行

时间:2019-02-27 07:46:12

标签: unix sed sh

有人可以帮助/建议我如何使用Shell脚本删除3个JavaScript文件中的前4行和后2行代码吗?

我尝试使用以下指南:UNIX - delete specific lines,但仅适用于前4行。所有3个Javascript文件都有不同的代码行集。

set -vx
lines2del="(1,2,3,4)"
sedCmds=${lines2del//,/d;}
sedCmds=${sedCmds/(/}
sedCmds=${sedCmds/)/}
sedCmds=${sedCmds}d
sed -i "$sedCmds" file

任何输入均受到高度赞赏。谢谢

3 个答案:

答案 0 :(得分:0)

将以下内容添加到您的lines2del

$(($(cat file | wc -l)-2))  // third last line
$(($(cat file | wc -l)-1))  // second last line
$(cat file | wc -l)         // last line

答案 1 :(得分:0)

这可能对您有用(GNU sed):

sed -i '1,4d;N;$d;P;D' file

这将删除第1至4行,然后打印除最后两行也删除的其他所有行。

答案 2 :(得分:0)

$ seq 10 | tail -n +5 | head -n -2
5
6
7
8

$ seq 10 | awk '{p3=p2; p2=p1; p1=$0} NR>6{print p3}'
5
6
7
8

$ seq 10 | awk '{p[NR%6]=$0} NR>6{print p[(NR-2)%6]}'
5
6
7
8

$ seq 10 | awk -v b=4 -v a=2 'BEGIN{t=b+a} {p[NR%t]=$0} NR>t{print p[(NR-a)%t]}'
5
6
7
8

$ seq 10 | awk -v b=3 -v a=5 'BEGIN{t=b+a} {p[NR%t]=$0} NR>t{print p[(NR-a)%t]}'
4
5