简体   繁体   中英

Delete multiple lines using sed

I want to delete all lines after pattern match and excluding the pattern match line.

here in below example delete all the lines which occurs after matching "1450/pm2-hmc2" pattern found withou t deleting pattern match line ex:

/root/abhishek/HPC/2023-01-03-1440/pm1-hmc1.txt
/root/abhishek/HPC/2023-01-03-1440/pm1-hmc2.txt
/root/abhishek/HPC/2023-01-03-1440/pm2-hmc0.txt
/root/abhishek/HPC/2023-01-03-1440/pm2-hmc1.txt
/root/abhishek/HPC/2023-01-03-1440/pm2-hmc2.txt
/root/abhishek/HPC/2023-01-03-1445/pm0-hmc0.txt
/root/abhishek/HPC/2023-01-03-1445/pm0-hmc1.txt
/root/abhishek/HPC/2023-01-03-1445/pm0-hmc2.txt
/root/abhishek/HPC/2023-01-03-1445/pm1-hmc0.txt
/root/abhishek/HPC/2023-01-03-1445/pm1-hmc1.txt
/root/abhishek/HPC/2023-01-03-1445/pm1-hmc2.txt
/root/abhishek/HPC/2023-01-03-1445/pm2-hmc0.txt
/root/abhishek/HPC/2023-01-03-1445/pm2-hmc1.txt
/root/abhishek/HPC/2023-01-03-1445/pm2-hmc2.txt
/root/abhishek/HPC/2023-01-03-1450/pm0-hmc0.txt
/root/abhishek/HPC/2023-01-03-1450/pm0-hmc1.txt
/root/abhishek/HPC/2023-01-03-1450/pm0-hmc2.txt
/root/abhishek/HPC/2023-01-03-1450/pm1-hmc0.txt
/root/abhishek/HPC/2023-01-03-1450/pm1-hmc1.txt
/root/abhishek/HPC/2023-01-03-1450/pm1-hmc2.txt
/root/abhishek/HPC/2023-01-03-1450/pm2-hmc0.txt
/root/abhishek/HPC/2023-01-03-1450/pm2-hmc1.txt
/root/abhishek/HPC/2023-01-03-1450/pm2-hmc2.txt
/root/abhishek/HPC/2023-01-03-1455/pm0-hmc0.txt
/root/abhishek/HPC/2023-01-03-1455/pm0-hmc1.txt
/root/abhishek/HPC/2023-01-03-1455/pm0-hmc2.txt
/root/abhishek/HPC/2023-01-03-1455/pm1-hmc0.txt
/root/abhishek/HPC/2023-01-03-1455/pm1-hmc1.txt
/root/abhishek/HPC/2023-01-03-1455/pm1-hmc2.txt
/root/abhishek/HPC/2023-01-03-1455/pm2-hmc0.txt
/root/abhishek/HPC/2023-01-03-1455/pm2-hmc1.txt
/root/abhishek/HPC/2023-01-03-1455/pm2-hmc2.txt
/root/abhishek/HPC/2023-01-03-1500/pm0-hmc0.txt
/root/abhishek/HPC/2023-01-03-1500/pm0-hmc1.txt
/root/abhishek/HPC/2023-01-03-1500/pm0-hmc2.txt
/root/abhishek/HPC/2023-01-03-1500/pm1-hmc0.txt
/root/abhishek/HPC/2023-01-03-1500/pm1-hmc1.txt
/root/abhishek/HPC/2023-01-03-1500/pm1-hmc2.txt
/root/abhishek/HPC/2023-01-03-1500/pm2-hmc0.txt
/root/abhishek/HPC/2023-01-03-1500/pm2-hmc1.txt
/root/abhishek/HPC/2023-01-03-1500/pm2-hmc2.txt

I tried with below command, but it is deleting the matching pattern line also.

sed '/1450\/pm2-hmc2/,$d' input.txt

You can just invert the condition, ie print everything from the start up to the matching line:

sed '1,/1450\/pm2-hmc2/!d'
sed -i '/1450\/pm2-hmc2/q' input.txt

This should solve your problem,

sed '/1450\/pm2-hmc2/d' input_b.txt > output.txt 

在此处输入图像描述

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM