Find a block of text and if a certain keyword exists, remove another block of text within that block


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Find a block of text and if a certain keyword exists, remove another block of text within that block
# 1  
Old 04-28-2020
Find a block of text and if a certain keyword exists, remove another block of text within that block

Platform: CentOS Linux
Language: Shell

Hello. So I have a text file named goob, containing the following contents:
Code:
		function-a()=""
                {
			type=scythe
			value-b=true
			{
				under="false"{}
			}
		}
		function-b()=""
                {
			type=hook
			value-b=true
			{
				under="false"{}
			}
		}
		function-c()=""
                {
			type=scythe
			value-b=true
			{
				under="false"{}
			}
		}

What needs to happen is for all functions with type "scythe", I need to remove the whole block of their value-b such that the result would be
Code:
		function-a()=""
                {
			type=scythe
		}
		function-b()=""
                {
			type=hook
			value-b=true
			{
				under="false"{}
			}
		}
		function-c()=""
                {
			type=scythe
		}

Any ideas? Thanks in advance.

Last edited by pulpwilkes; 04-28-2020 at 01:19 AM..
# 2  
Old 04-28-2020
Hi pulpwilkes and welcome to the forums

Some points missing:
  • Use code tags for code
  • What OS
  • What language / shell?

--- Post updated at 06:35 ---

Thanks for the updates.
  1. Your 'desired' output still contains a value-b=true 'block' --> purpose or accident?
  2. What have you tried so far? (sry forgot to ask before)
This User Gave Thanks to sea For This Post:
# 3  
Old 04-28-2020
1. For function-b, the value-b=true block remains as its type is hook, not scythe.
2. I've tried researching on sed but the closest I came to is its function of removing a whole data block from point A to point b i.e. all value-b=true blocks regardless of their type.
# 4  
Old 04-28-2020
Quote:
Originally Posted by pulpwilkes
1. For function-b, the value-b=true block remains as its type is hook, not scythe.
oops Smilie

Quote:
Originally Posted by pulpwilkes
2. I've tried researching on sed but the closest I came to is its function of removing a whole data block from point A to point b i.e. all value-b=true blocks regardless of their type.
As in, what code do you have so far?
# 5  
Old 04-29-2020
Here is one with awk:
Code:
awk '
{ blevel+=gsub("[{]","&")-gsub("[}]","&") }
blevel<dlevel { del=0 }
del==0
$1~/^type=scythe/ { del=1; dlevel=blevel }
' goob

When it meets type=scythe it deletes the following lines until it leaves the current { block }.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Extract a block of text

Hello all, I am working on a script which should parse a large file called input.txt which contains table definitions, index definitions and comments like these ones: ------------------------------------------------ -- DDL Statements for table "CMWSYS"."CMWD_TEC_SUIVI_TRT"... (12 Replies)
Discussion started by: kiki_riki_miki
12 Replies

2. Shell Programming and Scripting

Grepping text block by block by using for loop

Hei buddies, Need ur help once again. I have a file which has bunch of lines which starts from a fixed pattern and ends with another fixed pattern. I want to make use of these fixed starting and ending patterns to select the bunch, one at a time. The input file is as follows. Hi welcome... (12 Replies)
Discussion started by: anushree.a
12 Replies

3. Shell Programming and Scripting

Block of text replacement using sed

Hi, I have a requirement in which i need to replace text as below - <stringProp name="Recipe">&lt;AddGroup Name=&quot;1001&quot; Path=&quot;ServiceAdministration/Controls/1001/ServiceSwitches&quot;&gt; &lt;Param Name=&quot;AttributeName&quot; Value=&quot;HeaderManipRspIngressRuleSet&quot; Type=&quot;String&quot; /&gt; &lt;Param Name=&quot;Value&quot;... (0 Replies)
Discussion started by: abhitanshu
0 Replies

4. UNIX for Dummies Questions & Answers

Deleting Block of Text from a File

Hi I am looking for the way to delete the block of data for example original file line1 line2 line3 line4 line5 input file line2 line3 original file should contain line1 line4 line5 (3 Replies)
Discussion started by: rakeshkumar
3 Replies

5. Shell Programming and Scripting

Filter or remove duplicate block of text without distinguishing marks or fields

Hello, Although I have found similar questions, I could not find advice that could help with our problem. The issue: We have several hundreds text files containing repeated blocks of text (I guess back at the time they were prepared like that to optmize printing). The block of texts... (13 Replies)
Discussion started by: samask
13 Replies

6. Shell Programming and Scripting

Extract a block of text??

Hello all, I have a large output file from which I would like to extract a single block of text. An example block of text is shown below: ***** EQUILIBRIUM GEOMETRY LOCATED ***** COORDINATES OF ALL ATOMS ARE (ANGS) ATOM CHARGE X Y Z ... (10 Replies)
Discussion started by: marcozd
10 Replies

7. Shell Programming and Scripting

How to insert text after a block of text?

Input: fstab is a configuration file that contains information of all the partitions and storage devices in your computer. The file is located under /etc, so the full path to this file is /etc/fstab. The >>>>> characters would be replaced by some texts. For example if i run a... (5 Replies)
Discussion started by: cola
5 Replies

8. Shell Programming and Scripting

Remove a block of Text at regular intervals

Hello all, I have a text files that consists of blocks of text. Each block of text represents a set of Cartesian coordinates for a molecule. Each block of text starts with a line that has a only a number, which is equal to the total number of atoms in the molecule. After this number is a line... (15 Replies)
Discussion started by: marcozd
15 Replies

9. UNIX for Advanced & Expert Users

awk - remove block of text, multiple actions for 'if', inline edit

I'm having a couple of issues. I'm trying to edit a nagios config and remove a host definition if a certain "host_name" is found. My thought is I would find host definition block containing the host_name I'm looking for and output the line numbers for the first and last lines. Using set, I will... (9 Replies)
Discussion started by: mglenney
9 Replies

10. Shell Programming and Scripting

Deleting text block in file

Need to delete a text block inside a file, that is marked with a start and an end pattern. Eg do not delete not delete <tag1> delete everything here here and here and here... <tag2> do not delete do not delete.... Believe sed is able to do this job but don't get it working. ... (1 Reply)
Discussion started by: andre123
1 Replies
Login or Register to Ask a Question