待处理文本如1-8行文本
$cat a 12345678
sed删除连续指定行:如1-4行
$sed '1,4d' a5678
sed删除不连续指定行:如第一行和第三行
$sed -e '1d' -e '3d' a245678
一个例子:
我有一个list文件如下:
$cat list unknown_other_2 #文件名,我要从文件里抓取一些信息,下同,发现下图里没有有些没有我想要的信息,test后面的数字代表这个list文件的行号unknown_other_5 #我要删除大小为0的行unknown_other_1 F002_other_1unknown_other_14t_unknown_other_4t_unknown_other_6t_unknown_other_4t_unknown_other_1t_unknown_other_4t_unknown_other_12t_unknown_other_4t_unknown_other_13t_unknown_other_10t_unknown_other_12t_unknown_other_4t_unknown_other_42t_unknown_other_16t_unknown_other_27t_unknown_other_14t_unknown_other_31t_unknown_other_12t_unknown_other_10t_unknown_other_13t_unknown_other_11t_unknown_other_22t_unknown_other_21t_unknown_other_45t_unknown_other_42t_unknown_other_4t_unknown_other_33t_unknown_other_1t_unknown_other_12t_unknown_other_14t_unknown_other_1t_unknown_other_31t_unknown_other_4t_unknown_other_11t_unknown_other_11t_unknown_other_3
test文件,test后面的数字对应上面list行号:
代码如下:
ls -l |awk '{if ($5==0){print $9}}'|cut -d "t" -f3|xargs -I {} echo -e "-e {}d"|xargs|xargs -I {} echo sed -i -e {} list|sh#执行结果#sed -i -e test10d -e test12d -e test14d -e test16d -e test2d -e test27d -e test3d -e test31d -e test32d -e test33d -e test35d -e test38d -e test39d -e test4d -e test40d -e test5d -e test9d list#分解说明#ls -l |awk '{if ($5==0){print $9}}' 列出大小为0的test文件#cut -d "t" -f3 抓取后面的数字 用字符"t" 分割test文件,取第三列数字部分#xargs -I {} echo -e "-e {}d"|xargs|xargs -I {} echo sed -i -e {} list 打印执行语句#sh 执行