My file is having the contents like this
AND1 (A) {
non : hafe
on: tc
ma : nite }
AND1 (B) {
non : hafe1
on: tc1
ma : nite1 }
AND1 (C) {
non : hafe3
on: tc2
ma : nite3 }
I have written a sed script to search the patterns AND1(A) and AND1 (B) and delete the entire content in these Blocks including the Patters AND1 (A) and AND1 (B)
but to my surprise the whole file content is getting deleted
This is my sed script
sed -n '/AND1 (A)/,/AND1 (B)/ { /non/d ;}'file > file1
My new file content should be
AND1 (C) {
non : hafe3
on: tc2
ma : nite3 }
but the whole file is getting deleted
Can someone give me advice ?
use awk
# awk 'BEGIN{RS=""}!/AND1 \(A|B\)/' file
AND1 (C) {
non : hafe3
on: tc2
ma : nite3 }
Thanks actually that soultion actually worked .
I am having another issue with my awk script
Contents of my file is like this
file
AND (P1) {
no : and ;
mo : band ;
co : land ;
}
OR (P2) {
no : sand ;
cling : dad ;
Fiend : salt ;
}
NAND (P3)
no : sat ;
to : jat;
pi : tad;
}
What I need to do I need to search the patterns AND (P1) and OR (P2) and then delete all the contents of this Block and insert the content from another file - file2 ( between P1 and P2 ) in this location.
What I am doing ; I am inserting the code first
awk '{ if($0 ~ /P1/) {set=1; next}; if( $0 ~ /P2/) {set = 0}; if (set ) { print }}' file2 | awk '/AND (P1)/{f=1}f && /}/{print; system("cat $1");f=0;next}1' file > newfile
file2 content
############
P1
AND is the the band
land is the and
P2
#############
After this To delete the blocks I could use
sed '/AND/,/OR/d' file
I am having two issues here
- The code will be inserted after the AND (P1) Block I want the code to be inserted before AND (P1) Block so that I can delete the respective blocks after that
- By using the command sed '/AND/,/OR/d' file
I will delete not full contents
It will delete only these entities
AND (P1) {
no : and ;
mo : band ;
co : land ;
}
OR (P2) {
Need some advice in this regards
Shalini