Unix Command


 
Thread Tools Search this Thread
Operating Systems Solaris Unix Command
# 8  
Old 04-12-2008
Hi,

Can you please help me explain what the second statement in sed does

's/\("[^"|][^"|]*\)|\([^|][^|]*|\)/\1 \2

I didnt get why "[^"|] and ^| is specified twice after special/escape character (\("[^"|][^"|]*\)|).

what does \1 \2 means..??

Please clarify

DudeSmilie
# 9  
Old 04-12-2008
\1 and \2 refer back to the parenthesized expressions in the match. These are thus called "backreferences". The numbering goes from left to right, so in \(a\(b\)c\(d\)\), the backreference \1 refers to the whole string, \2 refers to b, and \3 refers to d.

With that, the rest should be fairly simple to deduce. The regular expression finds two fields where the first begins with a double quote, and merges them back to one field by replacing the field separator with a space.

This doesn't work if you have fields with multiple spaces in them, but it's not terribly hard to fix.
# 10  
Old 04-12-2008
Correct era, this will only work for 0 or one spaces in the field, and correcting it would be a loop of the second expression:

Code:
sed -e 's/ /|/g' -e :a -e 's/\("[^"|][^"|]*\)|\([^|][^|]*|\)/\1 \2/g;ta'

# 11  
Old 04-15-2008
Hi All,

Thanks for the detailed explanation.

I was just wondering how we can handle multiple spaces in such case. Please find the below example

1234 "6734" "DSS" "8887578384" "ABC PRIVATE LMT REGNO 6" 3245

here the problem is, there are multiple spaces in the string. I tried adding the | for the command you have provided but it didnt work.

sed -e 's/ /|/g' -e 's/\("[^"|][^"|]*\)|\([^|][^|][^|]*|\)/\1 \2 \3/g' samp

Can you please suggest me the exact command to handle multiple spaces with in the string and in between the fields?

Thanks
DudeSmilie
# 12  
Old 04-15-2008
Hi,

Earlier I have mentioned the command wrongly.

Input:
$ cat samp
1234 "6734" "DSS" "8887578384" "ABC PRIVATE LMT REGNO 6" 3245

Output of the unix command:

$ sed -e 's/ / /g' -e 's/ /|/g' -e 's/\("[^"|][^"|]*\)|\([^|][^|]*|\)\([^"|][^"|]*|\)/\1 \2 \3/g' samp

1234|"6734"|"DSS"|"8887578384"|"ABC PRIVATE| LMT|REGNO|6"|3245


Desired output:

1234|"6734"|"DSS"|"8887578384"|"ABC PRIVATE LMT REGNO 6"|3245

Also just would like to know if we can handle it dynamically? To be more clear now there are 4 spaces ("ABC PRIVATE LMT REGNO 6") with in the string. In case if we have more spaces how can this be handled? Smilie

Please clarify..

Thanks
Dude Smilie
# 13  
Old 04-15-2008
Answer already provided in post #10
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

UNIX command to copy files from Windows to UNIX box

Hi Folks, I have a file name abc.xml in my windows machine at the location c:\ytr\abc.xml which I want to place at the unix box machine inside cde directory.. at the following location that is /opt/app/cde/ now the credentials of unix box are abc345 -->(dummyid) ftyiu88--->(dummy passwd) ... (4 Replies)
Discussion started by: punpun66
4 Replies

2. Shell Programming and Scripting

Specify an entire UNIX command as a command line argument

I'm trying to write a bash script called YN that looks like the following YN "Specify a question" "doThis" "doThat" where "doThis" will be executed if the answer is "y", otherwise "doThat". For example YN "Do you want to list the file dog?" "ls -al dog" "" Here's my attempt... (3 Replies)
Discussion started by: LeoKSimon
3 Replies

3. UNIX Desktop Questions & Answers

Can Unix access Windows' File through Command Prompt in Unix

Hi all, I wish to know whether Unix can access window's file in Unix's terminal? Apart from that, how to copy files or share files between Window and Unix? I get to know of secure copy, however, my company's Unix does not support the feature of secure copy? Any other method for me to share/... (5 Replies)
Discussion started by: jessy83
5 Replies

4. UNIX for Dummies Questions & Answers

New to Unix command line and have a question about the "sort" command

I am going through the Unix Made Easy second edition book by John Muster. So far it's been very informative and I can tell it may be a bit out of date. In one of the exercises it talks about the "sort" command and using it to sort column's of data etc. The "sort" command has changed a bit and... (1 Reply)
Discussion started by: budfoxcat
1 Replies

5. UNIX for Advanced & Expert Users

unix command : how to insert text at the cursor location via command line?

Hi, Well my title isn't very clear I think. So to understand my goal: I have a script "test1" #!/bin/bash xvkbd -text blabla with xbindkeys, I bind F5 key in order it runs my test1 script So when I press F5, test1 runs. I'm under Emacs/Vi and I press F5 in order to have "blabla" be... (0 Replies)
Discussion started by: xib.be
0 Replies

6. Shell Programming and Scripting

assign a command line argument and a unix command to awk variables

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)
Discussion started by: sweta_doshi
0 Replies

7. HP-UX

How to use more than one MPE command STREAM with Unix command in a single shell?

Hello, I have problem in writing the shell script involving MPE command STREAM related to HP-UX and Unix command. Script is sh "nlshCMD 'STREAM <job name1>' | 'SHOWJOB' | grep $HPJOBNUM" sh "nlshCMD 'STREAM <job name2>' | 'SHOWJOB' | grep $HPJOBNUM" sh "nlshCMD 'STREAM <job name3>' |... (1 Reply)
Discussion started by: bosskr
1 Replies

8. Shell Programming and Scripting

How to use more than one MPE command STREAM with Unix command in a single shell?

Hello, I have problem in writing the shell script involving MPE command STREAM related to HP-UX and Unix command. Script is sh "nlshCMD 'STREAM <job name1>' | 'SHOWJOB' | grep $HPJOBNUM" sh "nlshCMD 'STREAM <job name2>' | 'SHOWJOB' | grep $HPJOBNUM" sh "nlshCMD 'STREAM <job name3>' |... (0 Replies)
Discussion started by: bosskr
0 Replies

9. UNIX for Dummies Questions & Answers

wc command help.... and other unix command....... urgent

hi all. thanks for looking i am doing some homework. one question is that when type wc and then how to tell the program that we have finished entering data? also why do some operating systems report 22 as the number of bytes in the file above, while others only 20? thanks so much,... (1 Reply)
Discussion started by: dashi2k
1 Replies
Login or Register to Ask a Question