heinheo
heinheo

Reputation: 565

Parse file for specific word in line

In my directory there are several files with the pattern

simulation_y_t

for all files with this pattern I would need to check whether in the last line of the file the word hgip comesup or not ...the word might not be separated by spaces from the surrounding characters but if it comes up it will come up within the last 20 characters of the line...

the last line of the file might look something like this (if it shall be removed)

((((1560:0.0129775,(1565:0.00473242,1447:0.00473242):0.00824512):0.0133245,((((1421:0.00357462,(1496:0.00352733,1472:0.00352733):4.72931e-05):0.00597691,1505:0.00955153):0.0104055,((((1465:0.00716479,(1527:0.00380709,1556:0.00380709):0.0033577):0.000984333,(1555:0.00381533,((1423:0.00169525,1411:0.00169525):0.00168847,1587:0.00338372):0.00043161):0.00433379):0.00159571,((1546:0.000908968,1584:0.000908968):0.00775293,(1492:0.00374859,1489:0.00374859):0.00491332):0.00108293):0.00962105,1594:0.0193659):0.000591157):0.00510731,(1442:0.0198716,(1525:0.00416688,(1550:0.00378343,1544:0.00378343):0.000383449):0.0157047):0.00519277):0.00123765):0.000318786,(1538:0.00713072,1530:0.00713072):0.0194901):0.000325926,((1483:0.00663734,1484:0.00663734):0.00471454,(1518:0.00352348,(1433:0.000365709,1450:0.000365709):0.00315777):0.0078284):0.0155948):0.00081517,1561:0.0277619):0.00127735):0.00271069hgip: 77113

note that the numbers and way the brackets are coudl be diffferent in every of the files it is really about whether these 4 characters appear in a row in that line ... if that do the line shall be removed from the file

how would i be able to do that?

Upvotes: 1

Views: 47

Answers (2)

bkmoney
bkmoney

Reputation: 1256

Use find to search for the files and then use the -exec option to delete the last line if it contains hgip

find . -type f -name '*simulation_y_t*' -exec sed -i '${/hgip/d}' {} \;

Upvotes: 1

josifoski
josifoski

Reputation: 1726

This should be easy

sed '/hgip/d' YourFile  

This will delete all lines where 'hgip' is inside

For checking only last line

sed '${/hgip/d}' YourFile  

This will delete only last line if 'hgip' is inside it

Upvotes: 1

Related Questions