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
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
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
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
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
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
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
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
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
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
LEARN ABOUT DEBIAN
shtool-subst
SHTOOL-SUBST.TMP(1) GNU Portable Shell Tool SHTOOL-SUBST.TMP(1)
NAME
shtool-subst - GNU shtool sed(1) substitution operations
SYNOPSIS
shtool subst [-v|--verbose] [-t|--trace] [-n|--nop] [-w|--warning] [-q|--quiet] [-s|--stealth] [-i|--interactive] [-b|--backup ext]
[-e|--exec cmd] [-f|--file cmd-file] [file] [file ...]
DESCRIPTION
This command applies one or more sed(1) substitution operations to stdin or any number of files.
OPTIONS
The following command line options are available.
-v, --verbose
Display some processing information.
-t, --trace
Enable the output of the essential shell commands which are executed.
-n, --nop
No operation mode. Actual execution of the essential shell commands which would be executed is suppressed.
-w, --warning
Show warning on substitution operation resulting in no content change on every file. The default is to show a warning on substitution
operations resulted in no content change on all files.
-q, --quiet
Suppress warning on substitution operation resulting in no content change.
-s, --stealth
Stealth operation. Preserve timestamp on file.
-i, --interactive
Enter interactive mode where the user has to approve each operation.
-b, --backup ext
Preserve backup of original file using file name extension ext. Default is to overwrite the original file.
-e, --exec cmd
Specify sed(1) command directly.
-f, --file cmd-file
Read sed(1) command from file.
EXAMPLE
# shell script
shtool subst -i -e 's;(c) ([0-9]*)-2000;(c) 1-2001;' *.[ch]
# RPM spec-file
%install
shtool subst -v -n
-e 's;^(prefix=).*;1 $RPM_BUILD_ROOT%{_prefix};g'
-e 's;^(sysconfdir=).*;1 $RPM_BUILD_ROOT%{_prefix}/etc;g'
`find . -name Makefile -print`
make install
HISTORY
The GNU shtool subst command was originally written by Ralf S. Engelschall <rse@engelschall.com> in 2001 for GNU shtool. It was prompted
by the need to have a uniform and convenient patching frontend to sed(1) operations in the OpenPKG package specifications.
SEE ALSO
shtool(1), sed(1).
18-Jul-2008 shtool 2.0.8 SHTOOL-SUBST.TMP(1)