Delete values between 2 patterns


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Delete values between 2 patterns
# 1  
Old 05-23-2014
Delete values between 2 patterns

Hi,

How can i delete values between 2 patterns like below:-

input.txt
Code:
192.1.1.2.22      blablabala
23.1.A.1.2        blablabalbl
5.4.1.1.12        blablaba

i need to delete all values between starting from "." no 3 and second column. the output should be:
Code:
192.1.1      blablabala
23.1.A       blablabalbl
5.4.1        blablaba

i tried using sed like this but get error.
Code:
sed '/\./3,/\t/d' input.txt

i can feel that it is not that difficult but just couldn't find what is wrong with it. Can anyone help me with my code? thanks
# 2  
Old 05-23-2014
Try:
Code:
perl -pe 's/(([^.]+\.){2}[^.]+).*?(\s+.*)/$1$3/' input.txt

This User Gave Thanks to bartus11 For This Post:
# 3  
Old 05-23-2014
Hi bartus11,

yes, it worked perfectly. Thanks so much. However, I am trying to learn awk and sed. I don't know perl and i just run your code to get the result. But, i need to know how to do it in Sed or awk. i did the following codes to get my results. it is a two-stage work:

1) i changed the third "." to other unique char (#) and save in a temporary file (out1)
Code:
sed 's/\./#/3' inputfile.txt > out1

then, i deleted the values between the patterns
Code:
sed 's/#.*[\t]/\t/' out1 > out2

where out2 is the final output. I got the right output but, i want a sed or awk code that only one liner as your perl. Thanks
# 4  
Old 05-23-2014
Code:
$ awk '{split($1,A,/\./);$1=A[1]"."A[2]"."A[3]}1' OFS='\t'  file
192.1.1	blablabala
23.1.A	blablabalbl
5.4.1	blablaba

This User Gave Thanks to Akshay Hegde For This Post:
# 5  
Old 05-23-2014
Quote:
Originally Posted by redse171
But, i need to know how to do it in Sed or awk. i did the following codes to get my results. it is a two-stage work:

1) i changed the third "." to other unique char (#) and save in a temporary file (out1)
Code:
sed 's/\./#/3' inputfile.txt > out1

then, i deleted the values between the patterns
Code:
sed 's/#.*[\t]/\t/' out1 > out2

where out2 is the final output. I got the right output but, i want a sed or awk code that only one liner as your perl. Thanks
If the file uses a tab delimiter and there is only 1 per line:
Code:
sed 's/\./\t/3; s/\t.*\t/\t/' file

That isn't portable sed, because \t is primarily a GNU extension. However, if it worked for you, and you only care about that platform, it should suffice.

Regards,
Alister
This User Gave Thanks to alister For This Post:
# 6  
Old 05-23-2014
Hi Akshay Hedge,

For your code, i got the right output for the first column. However, i have more more information in column 2. as the result, i got this output:

Code:
192.1.1	blablabala       kdlfkll    dhdkskdks
23.1.A	blablabalbl      mdkskd   
5.4.1	blablaba         blablaba        blablaba

all the whitespace between the words becomes tab delimited. It is my bad though as i did not give u better sample. thanks
# 7  
Old 05-23-2014
Code:
sed -n 's|\([0-9]*\.[0-9]*\.[A-Z0-9]*\)\(\.[0-9]*\.[0-9]*\)\(.*\)|\1\3|p'

This User Gave Thanks to protocomm For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Delete patterns matching

Delete patterns matching OS version: RHEL 7.3 Shell : Bash I have a file like below (pattern.txt). I need to delete all lines starting with the following words (words separated by comma below) and ) character. LOGGING, NOCOMPRESS, TABLESPACE , PCTFREE, INITRANS, MAXTRANS, STORAGE,... (3 Replies)
Discussion started by: John K
3 Replies

2. Shell Programming and Scripting

Add values of similar patterns with awk

so my output is this: session_closed=157 session_opened=151 session_closed=18 session_opened=17 there are two patterns here, but with different values. the two patterns are "session_opened" and "session_closed". i expect there will be many more other patterns. what i want to do is... (8 Replies)
Discussion started by: SkySmart
8 Replies

3. Shell Programming and Scripting

Find files not matching multiple patterns and then delete anything older than 10 days

Hi, I have multiple files in my log folder. e.g: a_m1.log b_1.log c_1.log d_1.log b_2.log c_2.log d_2.log e_m1.log a_m2.log e_m2.log I need to keep latest 10 instances of each file. I can write multiple find commands but looking if it is possible in one line. m file are monthly... (4 Replies)
Discussion started by: wahi80
4 Replies

4. Shell Programming and Scripting

Delete lines and the first pattern between 2 matched patterns

Hi, i need help to delete all the lines between 2 matched patterns and the first pattern must be deleted too. sample as follows: inputfile.txt >kump_1 ........................... ........................... >start_0124 dgfhghgfh fgfdgfh fdgfdh >kump_2 ............................. (7 Replies)
Discussion started by: redse171
7 Replies

5. Shell Programming and Scripting

Match paragraph between two patterns, delete the duplicate paragraphs

Hello all I have a file my DNS server where there are duplicate paragrapsh like below. How can I remove the duplicate paragraph so that only one paragraph remains. BEGIN; replace into domains (name,type) values ('225.168.192.in-addr.arpa','MASTER'); replace into records (domain_id,... (2 Replies)
Discussion started by: sb245
2 Replies

6. Shell Programming and Scripting

Delete line breaks and extra spaces between patterns

Hi, if in between strings "<section" and "</section>" across multiple lines there occurs the string "ole-present", delete all line breaks and replace any tabs or multiple spaces with a single space. Looking for an AWK or SED solution. Thank you. <section ... status = "ole-present" ...... (2 Replies)
Discussion started by: pioavi
2 Replies

7. Shell Programming and Scripting

Capture values using multiple regex patterns

I have to read the file, in each line of file i need to get 2 values using more than one search pattern. ex: <0112 02:12:20 def > /some string/some string||some string||124 i donot have same delimiter in the line, I have to read '0112 02:12:20' which is timestamp, and last field '124' which is... (4 Replies)
Discussion started by: adars1
4 Replies

8. Shell Programming and Scripting

delete lines between patterns

Hi, I've searched in this forum all day long but was not able to find enough codes to help me do a task. The only code that I can come up with is this: sed '/ /,/ /{//p;d;}' inputfile > outputfile I would like to sed/awk/grep a file for two patterns and then delete the lines between... (4 Replies)
Discussion started by: shamushamu
4 Replies

9. Shell Programming and Scripting

delete two patterns and remove one pattern

Friends, I have .txt file with following format. START ABC|Prashant1|Patel1 ABC|Prashant2|Patel2 ABC|Prashant1|Patel1 ABC|Prashant2|Patel2 END I would like to do: 1) Delete line with START 2) Delete line with END 3) Remove ABC| 4) Delete duplicate records The following command... (7 Replies)
Discussion started by: ppat7046
7 Replies

10. Shell Programming and Scripting

Delete lines between two patterns without deleting the second pattern

I want to delete lines like this sed '/FROM_HERE/,/TO_HERE/d' but I would like to *not* delete the second match, i.e. the TO_HERE line. How can I achieve this? Thank you! (1 Reply)
Discussion started by: Ilja
1 Replies
Login or Register to Ask a Question