sed simplification...


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting sed simplification...
# 1  
Old 11-30-2005
sed simplification...

All,

I have an file in the xml format which looks like this

Code:
<source>Please wait. This may take several minutes...</source>
<translation>Please wait. This may take several minutes...</translation>

<source>Your computer must be restarted to complete setup.\nClick on 'OK' button to restart.</source>
<translation>Your computer must be restarted to complete setup.\nClick on 'OK' button to restart.</translation>

<source>'%1' can not be deleted. Close all programs\nand try again</source>
<translation>'%1' can not be deleted. Close all programs\nand try again</translation>

<source>XYZ\nCopyright 2005, ABC\nAll rights reserved</source>
<translation>XYZ\nCopyright 2005, ABC.\nAll rights reserved.</translation>

\n are the new line characters. My intention is to replace all \n with an actual new line for the translation tag alone.

I have a sed command for that

sed -e '/<translation>/{
s/\(.*\)\\n\(.*\)\\n\(.*\)/\1\n\2\n\3/g
s/\(.*\)\\n\\n\(.*\)/\1\n\n\2/g
s/\(.*\)\\n\(.*\)/\1\n\2/g
}' sample.ts

The output is

Code:
[/tmp]$ sed -e '/<translation>/{  
> s/\(.*\)\\n\(.*\)\\n\(.*\)/\1\n\2\n\3/g
> s/\(.*\)\\n\\n\(.*\)/\1\n\n\2/g
> s/\(.*\)\\n\(.*\)/\1\n\2/g
> }' sample.ts
<source>Please wait. This may take several minutes...</source>
<translation>Please wait. This may take several minutes...</translation>

<source>Your computer must be restarted to complete setup.\nClick on 'OK' button to restart.</source>
<translation>Your computer must be restarted to complete setup.
Click on 'OK' button to restart.</translation>

<source>'%1' can not be deleted. Close all programs\nand try again</source>
<translation>'%1' can not be deleted. Close all programs
and try again</translation>

<source>XYZ\nCopyright 2005, ABC\nAll rights reserved</source>
<translation>XYZ
Copyright 2005, ABC.
All rights reserved.</translation>

It works fine.

Now, the sed command looks pretty complex even though it is simple. Can that sed be simplified ? I am biased towards sed because, I came up with that.

Is there a non-sed solution as well ?

Thanks,
vino
# 2  
Old 11-30-2005
Okie. I got a simpler sed solution.

Code:
sed -e '/<translation>/{s#\\n#\n#g}' sample.ts

I guess the long hours had its toll on me..

Okie.. so now the posting goes as.. is there is a non-sed solution.
# 3  
Old 11-30-2005
Code:
nawk '/<translation>/{ gsub("\\\\n", sprintf("\n")) }1' sample.ts

# 4  
Old 11-30-2005
Works very well. Thanks vgersh99.

Vino
# 5  
Old 11-30-2005
gnu sed:

Code:
$ sed -e '/<translation>/{s/\\n/\n/g}' sample.txt
<source>Please wait. This may take several minutes...</source>
<translation>Please wait. This may take several minutes...</translation>
 
<source>Your computer must be restarted to complete setup.\nClick on 'OK' button to restart.</source>
<translation>Your computer must be restarted to complete setup.
Click on 'OK' button to restart.</translation>
 
<source>'%1' can not be deleted. Close all programs\nand try again</source>
<translation>'%1' can not be deleted. Close all programs
and try again</translation>
 
<source>XYZ\nCopyright 2005, ABC\nAll rights reserved</source>
<translation>XYZ
Copyright 2005, ABC.
All rights reserved.</translation>

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

FORTRAN Simplification of Function

I have the following code that counts the number of consecuitive logicals from the first one. Any way I can simplify this function? Function count_present & ( & p1, p2, p3, p4, p5, p6, p7, p8 & ) ... (4 Replies)
Discussion started by: kristinu
4 Replies

2. Shell Programming and Scripting

I am learning regular expression in sed,Please help me understand the use curly bracket in sed,

I am learning SED and just following the shell scripting book, i have trouble understanding the grep and sed statement, Question : 1 __________ /opt/oracle/work/antony>cat teledir.txt jai sharma 25853670 chanchal singhvi 9831545629 anil aggarwal 9830263298 shyam saksena 23217847 lalit... (7 Replies)
Discussion started by: Antony Ankrose
7 Replies

3. Shell Programming and Scripting

sed and awk giving error ./sample.sh: line 13: sed: command not found

Hi, I am running a script sample.sh in bash environment .In the script i am using sed and awk commands which when executed individually from terminal they are getting executed normally but when i give these sed and awk commands in the script it is giving the below errors :- ./sample.sh: line... (12 Replies)
Discussion started by: satishmallidi
12 Replies

4. Shell Programming and Scripting

sed inside sed for replacing string

My need is : Want to change docBase="/something/something/something" to docBase="/only/this/path/for/all/files" I have some (about 250 files)xml files. In FileOne it contains <Context path="/PPP" displayName="PPP" docBase="/home/me/documents" reloadable="true" crossContext="true">... (1 Reply)
Discussion started by: linuxadmin
1 Replies

5. Shell Programming and Scripting

How to use sed to replace the a string in the same file using sed?

How do i replace a string using sed into the same file without creating a intermediate file? (7 Replies)
Discussion started by: gomes1333
7 Replies

6. UNIX for Dummies Questions & Answers

SED: Can't Repeat Search Character in SED Output

I'm not sure if the problem I'm seeing is an artifact of sed or simply a beginner's mistake. Here's the problem: I want to add a zero-width space following each underscore between XML tags. For example, if I had the following xml: <MY_BIG_TAG>This_is_a_test</MY_BIG_TAG> It should look like... (8 Replies)
Discussion started by: rhetoric101
8 Replies

7. Shell Programming and Scripting

deleting text records with sed (sed paragraphs)

Hi all, First off, Thank you all for the knowledge I have gleaned from this site! Deleting Records from a text file... sed paragraphs The following code works nearly perfect, however each time it is run on the log file it adds a newline at the head of the file, run it 5 times, it'll have 5... (1 Reply)
Discussion started by: Festus Hagen
1 Replies

8. Shell Programming and Scripting

sed over writes my original file (using sed to remove leading spaces)

Hello and thx for reading this I'm using sed to remove only the leading spaces in a file bash-280R# cat foofile some text some text some text some text some text bash-280R# bash-280R# sed 's/^ *//' foofile > foofile.use bash-280R# cat foofile.use some text some text some text... (6 Replies)
Discussion started by: laser
6 Replies

9. Shell Programming and Scripting

Issue with a sed one liner variant - sed 's/ ; /|/g' $TMP1 > $TMP

Execution of the following segment is giving the error - Script extract:- OUT=$DATADIR/sol_rsult_orphn.bcp TMP1=${OUT}_tmp1 TMP=${OUT}_tmp ( isql -w 400 $dbConnect_OPR <<EOF select convert(char(10), s.lead_id) +'|' + s.pho_loc_type, ";", s.sol_rsult_cmnt, ";", +'|'+ s.del_ind... (3 Replies)
Discussion started by: kzmatam
3 Replies

10. Shell Programming and Scripting

Simplification of a shell script

I have the following script: df > df.txt scp df.txt username@192.168.1.2:~ rm df.txt Its purpose is: Send disk space usage report to another machine Because it is now included in a shell script that is invoked by a cron, it makes maintenance harder. I would like it to be on a single line... (5 Replies)
Discussion started by: figaro
5 Replies
Login or Register to Ask a Question