I plan to edit 3 xml files without opening them (as opening, editing, closing is more prone to errors).
The one I want to edit is with a condition.
I need to update N to Y wherever I see Flag_XYZ_TurnOn in all 3 files. Also I prefer to run it from command line rather than having it in a script.
Example of the pattern:
Before:
Code:
<Name>Flag_XYZ_TurnOn</Name>
<Value>N</Value>
After:
Code:
<Name>Flag_XYZ_TurnOn</Name>
<Value>Y</Value>
I wrote SED commands and it works great in Linux but NOT in Unix
I tried the following sed commands from command line
Code:
sed -i.saved '/Flag_xyz_/{n;s/N/Y/}' infile_1 infile_2
sed '/Flag_xyz_/{n;s/N/Y/}' input_file
So as an alternative to sed I tried looking at awk as it is compatible with Unix too. But instead of command line it is making to write a script example below, which am personally not prefering.
Code:
for i in `find . -type f -name "*.xml"`
do
awk '/Flag_xyz_TurnOn/{n=NR+1}NR==n{sub(/>N</,">Y<")}1' $i > /temp/tmp123.xml
cp /temp/tmp123.xml $i
rm /temp/tmp123.xml
done
Anybody can suggest me to write in a better way? So that its a single line command, which i can run from command line to achieve my desired result?
Thanking you in advance.
cheers
Last edited by Scrutinizer; 04-11-2017 at 12:17 PM..
Reason: Additional code tags
uname -a
Linux xxxx 3.10.0-327.36.1.el7.x86_64 #1 SMP Wed Aug 17 03:02:37 EDT 2016 x86_64 x86_64 x86_64 GNU/Linux
uname -a
HP-UX xxxx B.11.31 U ia64 2391660905 unlimited-user license
SunOS xxxxx 5.10 Generic_139555-08 sun4v sparc SUNW,Sun-Fire-T200
when I try the sed commands on Unix it is giving me this error
Code:
sed '/Flag_xyz_/{n;s/N/Y/}' yyy.xml
sed: Function /Flag_xyz_/{n;s/N/Y/} cannot be parsed.
sed -i.saved '/Flag_xyz_/{n;s/N/Y/}' yyy.xml
sed: illegal option -- i
Usage: sed [-n] [-e script] [-f source_file] [file...]
Hi,
I am trying to pass awk field to a command line executed within awk (need to convert a timestamp into formatted date).
All my attempts failed this far.
Here's an example.
It works fine with timestamp hard-codded into the command
echo "1381653229 something" |awk 'BEGIN{cmd="date -d... (4 Replies)
below is the output xml string from some other command and i will be parsing it using awk
cat /tmp/alerts.xml
<Alert id="10102" name="APP-DS-ds_ha-140018-componentFailure-S" alertDefinitionId="13982" resourceId="11427" ctime="1359453507621" fixed="false" reason="If Event/Log Level(ANY) and... (2 Replies)
Hi,
I have a situation to compare one file, say file1.txt with a set of files in directory.The directory contains more than 100 files.
To be more precise, the requirement is to compare the first field of file1.txt with the first field in all the files in the directory.The files in the... (10 Replies)
Hello all,
Here is what my bash script does: sums number columns, saves the tot in new column, outputs if tot >= threshold val:
> cat getnon0file.sh
#!/bin/bash
this="getnon0file.sh"
USAGE=$this"
InFile="xyz.38"
Min="0.05"
#
awk '{sum=0; for(n=2; n<=NF; n++){sum+=$n};... (4 Replies)
I have a script problem that I am not able to solve due my very limited understanding of unix/awk.
This is the contents of test.sh
awk '{print $1}'
From the prompt if I enter:
./test.sh Hello World
I would expect to see "Hello" but all I get is a blank line. Only then if I enter "Hello... (2 Replies)
Sorry for the duplicate thread this one is similar to the one in
https://www.unix.com/shell-programming-scripting/88132-awk-sed-script-read-values-parameter-files.html#post302255121
Since there were no responses on the parent thread since it got resolved partially i thought to open the new... (4 Replies)
Hi ,
I have a piece of code ...wherein I need to assign the following ...
1) A command line argument to a variable
e.g origCount=ARGV
2) A unix command to a variable
e.g result=`wc -l testFile.txt`
in my awk shell script
When I do this :
print "origCount" origCount --> I get the... (0 Replies)