Regex Expression Replace


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Regex Expression Replace
# 1  
Old 07-24-2017
Regex Expression Replace

I have a XML file where there is a tag with like

<wd:address_line_1>1234 Street</wd:address_line_1>

I want to replace the values "1234 Street" with "Test Data". Different people have different address lines and i want to replace with a fixed value to mask the file. I was trying to use sed with regex but mostly the characters like < and </ . Need some help on this.

Last edited by jim mcnamara; 07-24-2017 at 03:31 PM..
# 2  
Old 07-24-2017
Is the address line always like you describe, so that the two "keys" are:
one at the start of the line
the next always at the end of the line follwed by a \n
-- and the address lines are always on a single line ??

If so,
Code:
awk ' /^wd:address_line_/  {sub("\>.*\<", ">Test data"<") }
        {print} '  somefile.xml


Last edited by jim mcnamara; 07-24-2017 at 03:47 PM..
# 3  
Old 07-24-2017
awk: cmd. line:1: warning: escape sequence `\>' treated as plain `>'
awk: cmd. line:1: warning: escape sequence `\<' treated as plain `<'
# 4  
Old 07-24-2017
In this case it is just a warning, but they should not be there*, so remove the back slashes. The issue in this case is with
Code:
/^wd:address_line_/

which should be changed to
Code:
/^<wd:address_line_/

.



--
An alternative approach would be:

Code:
awk '/^wd:address_line_/{$2="Test data"}1' RS=\< ORS=\< FS=\> OFS=\> file.xml



--
*Note: In GNU awk \< and \> have a special meaning (left and right word boundary).

Last edited by Scrutinizer; 07-24-2017 at 05:47 PM..
# 5  
Old 07-25-2017
Code:
awk '/^wd:address_line_/{$2="Test data"}1' RS=\< ORS=\< FS=\> OFS=\> file.xml

samething i am doing for national_id but both national_id and national_id_type is getting replaced. I need only one to be replaced.

Last edited by Corona688; 07-25-2017 at 12:08 PM..
# 6  
Old 07-25-2017
Use code tags for code please. [code]stuff[/code]
# 7  
Old 07-25-2017
An attempt with sed
Code:
sed '
s|\(<wd:address_line_1\)>.*<|\1>Test data<|
s|\(<wd:national_id\)>.*<|\1>Test data2<|
'

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Sed: -e expression #1, char 20: unterminated address regex

I am trying to add word in last of particular line. the same command syntex is running on prompt. but in bash script give error."sed: -e expression #1, char 20: unterminated address regex" Please help. for i in `cat servername`; do ssh -q -t root@$i sed -i '/simple_allow_groups =/s/$/,... (4 Replies)
Discussion started by: yash_message
4 Replies

2. Shell Programming and Scripting

Hi im new to bash scripting I want to know what does the regex expression do ??

# check host value regex='^(||1|2|25)(\.(||1|2|25)){3}$' if ')" != "" ]; then if ]; then echo host $host not found exit 4 fi elif ]; then echo $host is an invalid host address exit 5 fi (1 Reply)
Discussion started by: kevin298
1 Replies

3. Emergency UNIX and Linux Support

Regular expression (regex) clean up text

Hi, Server - MEDIAWIKI - MYSQL - CENTOS 5 - PHP5 I have a database import of close to a million pages into my wiki, mediawiki site, the format that were left with is not pretty, and I need to find a way to clean this up and present it nicely... I think regex is the best option as I can... (1 Reply)
Discussion started by: lawstudent
1 Replies

4. Programming

Perl: How to read from a file, do regular expression and then replace the found regular expression

Hi all, How am I read a file, find the match regular expression and overwrite to the same files. open DESTINATION_FILE, "<tmptravl.dat" or die "tmptravl.dat"; open NEW_DESTINATION_FILE, ">new_tmptravl.dat" or die "new_tmptravl.dat"; while (<DESTINATION_FILE>) { # print... (1 Reply)
Discussion started by: jessy83
1 Replies

5. Shell Programming and Scripting

awk variables in regex expression ?

Hello, Could someone explain why this one returns nothing: $ x=/jon/ $ echo jon | awk -v xa=$x '$1~xa {print}' $ while the following works fine: $ x=jon $ echo jon | awk -v xa=$x '$1==xa {print}' $ jon and the following works fine: $ echo jon | awk '$1~/jon/ {print}' $ jon ... (3 Replies)
Discussion started by: vilius
3 Replies

6. Shell Programming and Scripting

help with simple regex expression

I am trying to grep the following line in a file using a bash shell: (..) admin1::14959:::::: (..) It works with the following expression (as expected) # cat file | grep ^*:: admin1::14959:::::: but it does not work with (not expected) # cat /etc/shadow | grep ^+:: I assume the... (2 Replies)
Discussion started by: schms
2 Replies

7. Shell Programming and Scripting

Creating a regex expression

Good morning all!! In my code I and looking through file /etc/syslog.congf and printing every line that has /var/log in it. I need to turn the if 9$line) into a regex code instead. #!/usr/bin/perl @file= 'cat /etc/syslog.conf'; //when foreach $line (@file){ if ($line =~... (3 Replies)
Discussion started by: bigben1220
3 Replies

8. UNIX for Advanced & Expert Users

Regular expression / regex substition on Unicode text

I have a large file encoded in Unicode that I need to convert to CSV. In general, I know how to do this by regular expression substitutions using sed or Perl, but one problem I am having is that I need to put a quotation mark at the end of each line to protect the last field. The usual regex... (1 Reply)
Discussion started by: thomas.hedden
1 Replies

9. Shell Programming and Scripting

Regular expression (regex) required

I want to block all special characters except alphanumerics.. and "."(dot ) character currently am using // I want to even block only single dot or multiple dots.. ex: . or .............. should be blocked. please provide me the reg ex. ---------- Post updated at 05:11 AM... (10 Replies)
Discussion started by: shams11
10 Replies

10. Shell Programming and Scripting

Replace if regex on specific column matches expression?

I am attempting to convert rewrite rules to Nginx, and since due to the mass amount of rewrites we must convert, I've been trying to write a script to help me on a specific part, easily. So far I have this: rewrite ^action/static/(+)/$ staticPage.php?pg=$1&%$query_string; What I want done... (5 Replies)
Discussion started by: EXT3FSCK
5 Replies
Login or Register to Ask a Question