Sponsored Content
Top Forums Shell Programming and Scripting sed multiline substitution if a condition holds Post 302566338 by plsrn on Thursday 20th of October 2011 07:45:59 AM
Old 10-20-2011
Ok, now it works. I slighlty modified your final suggestion using the following code. Thanks a lot for your (really impressive) effort in helping me!

Quote:
#!/bin/sh

AWKFILE=`basename $0`_$$.awk

[[ -f $AWFILE ]] && rm $AWKFILE

while IFS=',' read VN AN TN RN
do
cat >> $AWKFILE <<EOFILE
/$VN\.$TN *= *'[^']*'/ {
match (\$0, "(.*)$VN.$TN *= *'([^']*)';(.*)",statements);

${VN}_type=statements[2];

if ( ${VN}_apply != "" ) {
if ( ${VN}_apply == "true" ) {
printf ("%s$VN.$RN = '%s'; %s\n", statements[1], ${VN}_type, statements[3]);
}
else {
printf ("%s$VN.$RN = ''; %s\n", statements[1], statements[3]);
}
}
else {
printf ("%s%s\n", statements[1], statements[3]);
}
}
/$VN\.$AN *= *[^;]*/ {
match (\$0, "(.*)$VN.$AN *= *([^;]*) *;(.*)",statements);

${VN}_apply=statements[2];

if ( ${VN}_type != "" ) {
if ( ${VN}_apply == "true") {
printf ("%s$VN.$RN = '%s'; %s\n", statements[1], ${VN}_type, statements[3]);
}
else {
printf ("%s$VN.$RN = ''; %s\n", statements[1], statements[3]);
}
}
else {
printf ("%s%s\n", statements[1], statements[3]);
}
}
EOFILE

if [ -z "$exclstr" ]
then
exclstr="$VN.$AN|$VN.$TN"
else
exclstr=$exclstr"|$VN.$AN|$VN.$TN"
fi

done < $2

cat >> $AWKFILE <<EOFILE
\$0 !~ /($exclstr) *= *[^;]*/ {
print;
}
EOFILE

gawk -f $AWKFILE $1

rm $AWKFILE
 

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

delete multiline string from file using sed.

Hi, I have file which has the following content... GOOD MORNING **********WARNING********** when it kicks from the kickstart, sshd daemon should start at last. (WHEN KICKING ITSELF, NOT AFTER KICKING). /etc/rc3.d/S55sshd ( run level specification for sshd is 55, now I would want to... (4 Replies)
Discussion started by: skmdu
4 Replies

2. Shell Programming and Scripting

Multiline pattern search using sed or awk

Hi friends, Could you please help me to resolve the below issue. Input file :- <Node> <username>abc</username> <password>ABC</password> <Node> <Node> <username>xyz</username> <password>XYZ</password> <Node> <Node> <username>mnp</username> ... (3 Replies)
Discussion started by: haiksuresh
3 Replies

3. UNIX for Dummies Questions & Answers

sed multiline pattern match

How can I write a script that takes a cisco config file and outputs every occurrence of two, or more, pattern matches through the whole config file? For example, out of a config file, i want to print out every line with interface, description and ip address through the whole file, and disregard... (3 Replies)
Discussion started by: knownasthatguy
3 Replies

4. Shell Programming and Scripting

Using sed to pattern match within a particular multiline block and take action

Hi all, This is my first post, so please go easy if I broke some rules. Not accustomed to posting in forums... :) I'm looking for help on pattern matching within a multiline block and looking to highlight blocks/block-ids that do NOT contain a particular pattern. For example an input file... (5 Replies)
Discussion started by: tirodad
5 Replies

5. UNIX for Dummies Questions & Answers

Need Multiline sed help!!

Hey everyone, I'm new to sed and I need to create a script for inserting one line of code at the beginning of every method in a Xcode project (over 6,000 methods). Each method Structure is (+ or -) (Various declarations-- could span multiple lines) ({) I've tried for days, any guidance would be... (2 Replies)
Discussion started by: jimmyz
2 Replies

6. Shell Programming and Scripting

sed failing with multiline html loaded with metacharacters

I have html files (newlines ending in linefeed) with metacharacter-laden multiline text I want to replace. To matters more complicated, the first line may appear elsewhere in the file, so I need these lines as a block. I can replace individual lines, but am failing to come up with anything that can... (2 Replies)
Discussion started by: mauricev
2 Replies

7. Shell Programming and Scripting

Multiline sed

Hi guys, I am fairly comfortable with using the sed command if the string to be replaced is all on a single line. I was wondering is it possible to use sed command in a multiline way ? Say for example I have the below string on 2 different lines: { "key": "brandNameA", ... (3 Replies)
Discussion started by: Junaid Subhani
3 Replies

8. Shell Programming and Scripting

[sed]: Substitute a string with a multiline value

Dear all, I try to replace a string of characters in a file (MyFile.txt) by a multiline value of the variable "Myvar": $ cat MyFile.txt DESCRIPTION '@TargetTable SCHEMA' ( @InputFlowDef ); $ The content of Myvar: $ echo "$Myvar" col1 , col2 , col3 $ (4 Replies)
Discussion started by: dae
4 Replies

9. Shell Programming and Scripting

sed multiline problem

I'm trying to replicate the sed output on p.108 of Sed&Awk,by Doughery & Robbins, 2nd edition. I'm on a Windows 10 Surface Pro, running Cygwin for 64-bit versions of Windows. Input text saved in text file called data_p108.txt: Consult Section 3.1 in the Owner and Operator Guide for a... (9 Replies)
Discussion started by: prooney
9 Replies
IMPRESSIVE-GETTRANSITIONS(1)				      Debian GNU/Linux manual				      IMPRESSIVE-GETTRANSITIONS(1)

NAME
impressive-gettransitions - Generate Impressive info scripts for LaTeX presentations SYNOPSIS
impressive-gettransitions FILE.tex DESCRIPTION
A simple script to produce a .info file for use with Impressive, using special comments in a LaTeX/Beamer file. FILE.tex is a file to be parsed into .info file. For each /fullpath/blah.tex /fullpath/blah.pdf.info gets produced. SYNTAX
In the LaTeX document, impressive-gettransitions counts the pages to determine the PDF slide number of each one. The simpler page changes are automatically detected, that is: egin{frame} and: pause Other, more elaborated page changes must be noted with a %O comment: item<1-> Foo item<2-> Bar %O The transition to apply can be specified in a %O comment: egin{frame} %O SlideUp OPERATION
When the .info file corresponding to the LaTeX document already exist, impressive-gettransitions does not clear it, but only adds the transitions if finds to it. Thus, if you modified your document in a way that requires to completely replace the transitions, manually clear the PageProps section of the .info file. This can be done by running the following sed command: sed -i -e "/^PageProps = {/,/^}/d" FILE.info SEE ALSO
impressive(1) AUTHOR
impressive-gettransitions (originally gettransitions) has been written by Rob Reid. This manpage has been originally written by Yaroslav Halchenko <debian@onerussian.com>. Debian Project 2012-02-10 IMPRESSIVE-GETTRANSITIONS(1)
All times are GMT -4. The time now is 08:13 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy