string search


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting string search
# 1  
Old 07-11-2012
string search

Hi,

I have a file like this


Code:
AAA|Ra|Pa|/|@@|//|@/|/|
B|Pa|/|/|/|@|@|@

Here i want to search and replace single occurrence of "@" with blank.

Expected output is
Code:
AAA|Ra|Pa|/|@@|//|/|/|
B|Pa|/|/|/|||

when i use tr or sed command,it replaces all,can anyone help me to achieve this output.

Thanks

Moderator's Comments:
Mod Comment Code tags for code, please.
# 2  
Old 07-11-2012
tr and sed have no concept of 'column', and trying to brute-force a regex that does can be confusing.

awk supports columns directly.

Code:
awk -F"|" -v OFS="|" '{ for(N=1; N<=NF; N++) if($N == "@") $N="" } 1' filename


Last edited by Corona688; 07-11-2012 at 05:34 PM.. Reason: Fixed typo
This User Gave Thanks to Corona688 For This Post:
# 3  
Old 07-11-2012
Cool Command,
Needs a " were the delimiter is set.

Code:
linux:~$ awk -F"|' -v OFS="|" '{ for(N=1; N<=NF; N++) if($N == "@") $N="" } 1' filename
> 
linux:~$ awk -F"|" -v OFS="|" '{ for(N=1; N<=NF; N++) if($N == "@") $N="" } 1' filename
AAA|Ra|Pa|/|@@|//|@/|/|
B|Pa|/|/|/|||

At least on my red hat bash machine. Smilie
This User Gave Thanks to jaysunn For This Post:
# 4  
Old 07-11-2012
Quote:
Originally Posted by prasson_ibm
Code:
AAA|Ra|Pa|/|@@|//|@/|/|
B|Pa|/|/|/|@|@|@

Here i want to search and replace single occurrence of "@" with blank.

Expected output is
Code:
AAA|Ra|Pa|/|@@|//|/|/|
B|Pa|/|/|/|||

Quote:
Originally Posted by Corona688
Code:
awk -F"|" -v OFS="|" '{ for(N=1; N<=NF; N++) if($N == "@") $N="" } 1' filename

Quote:
Originally Posted by jaysunn
Code:
linux:~$ awk -F"|" -v OFS="|" '{ for(N=1; N<=NF; N++) if($N == "@") $N="" } 1' filename
AAA|Ra|Pa|/|@@|//|@/|/|
B|Pa|/|/|/|||

The output of the command does not match the expected output. awk is looking for a field that consists of nothing but a single @ instead of a field containing a single @ among other possible characters.

Before investing any time on a fix, I believe the original poster should specify what they mean by a single @. Is singularity determined by the immediately surrounding characters or by the contents of a field? For example, does a field such as ...|@\@|... consist of two singles, both of which should be replaced? Or should that field be left as it is? Similarly, in ...|@\@@|..., should the first @ be replaced or not?

Regards,
Alister

Last edited by alister; 07-11-2012 at 08:19 PM..
# 5  
Old 07-11-2012
Hi

Thanks for your reply.

Here singularity is determined by contents of the field i.e. if @ occurs more then once in a field,i need to remove it otherwise leave it as it is.
# 6  
Old 07-11-2012
Quote:
Originally Posted by prasson_ibm
Here i want to search and replace single occurrence of "@" with blank.
Quote:
Originally Posted by prasson_ibm
if @ occurs more then once in a field,i need to remove it otherwise leave it as it is.
You have given two contradictory explanations. It's probably best to start from the beginning, with a few lines of sample input containing as many distinct variations in field values as possible, along with the desired output.

This is probably not a complicated problem to solve, but not knowing exactly what should be done will likely result in wasted time on both sides, with us having to refine or scrap a first round of solutions, and with you having to ask for further assistance.

Regards,
Alister
# 7  
Old 07-11-2012
Hi,

I apologies for the last post.

Correct statement is:-

Here singularity is determined by contents of the field i.e. if @ occurs only once in a field,i need to remove it otherwise leave it as it is.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

How to use a grep search to search for a specific string within multiple directories?

Lets say I have a massive directory which is filled with other directories all filled with different c++ scripts and I want a listing of all the scripts that contain the string: "this string". Is there a way to use a grep search for that? I tried: grep -lr "this string" * but I do not... (3 Replies)
Discussion started by: Circuits
3 Replies

2. UNIX for Beginners Questions & Answers

Search a string and display its location on the entire string and make a text file

I want to search a small string in a large string and find the locations of the string. For this I used grep "string" -ob <file name where the large string is stored>. Now this gives me the locations of that string. Now how do I store these locations in a text file. Please use CODE tags as... (7 Replies)
Discussion started by: ANKIT ROY
7 Replies

3. Shell Programming and Scripting

Search string within a file and list common words from the line having the search string

Hi, Need your help for this scripting issue I have. I am not really good at this, so seeking your help. I have a file looking similar to this: Hello, i am human and name=ABCD. How are you? Hello, i am human and name=PQRS. I am good. Hello, i am human and name=ABCD. Good bye. Hello, i... (12 Replies)
Discussion started by: royzlife
12 Replies

4. Shell Programming and Scripting

Search a string in a text file and add another string at the end of line

Dear All I am having a text file which is having more than 200 lines. EX: 001010122 12000 BIB 12000 11200 1200003 001010122 2000 AND 12000 11200 1200003 001010122 12000 KVB 12000 11200 1200003 In the above file i want to search for string KVB... (5 Replies)
Discussion started by: suryanarayana
5 Replies

5. Shell Programming and Scripting

Search a string in a text file and add another string at the particular position of a line

I am having a text file which is having more than 200 lines. EX: 001010122 12000 BIB 12000 11200 1200003 001010122 2000 AND 12000 11200 1200003 001010122 12000 KVB 12000 11200 1200003 In the above file i want to search for string KVB and add/replace... (1 Reply)
Discussion started by: suryanarayana
1 Replies

6. Shell Programming and Scripting

Search one string and then search another string in the next line

I am unable to use grep comman to Print only EmpPosition and if the EmpID next line. So output should be both EmpPosition and EmpID and also EmpPosition and EmpID data should match. Sample Data EmpPosition "New" EmpID "New" - - EmpPosition "New" ... (4 Replies)
Discussion started by: onesuri
4 Replies

7. Shell Programming and Scripting

Search several string and convert into a single line for each search string using awk command AIX?.

I need to search the file using strings "Request Type" , " Request Method" , "Response Type" and by using result set find the xml tags and convert into a single line?. below are the scenarios. Cat test Nov 10, 2012 5:17:53 AM INFO: Request Type Line 1.... (5 Replies)
Discussion started by: laknar
5 Replies

8. Shell Programming and Scripting

search string in a file and retrieve 10 lines including string line

Hi Guys, I am trying to write a perl script to search a string "Name" in the file "FILE" and also want to create a new file and push the searched string Name line along with 10 lines following the same. can anyone of you please let me know how to go about it ? (8 Replies)
Discussion started by: sukrish
8 Replies

9. Shell Programming and Scripting

Search, replace string in file1 with string from (lookup table) file2?

Hello: I have another question. Please consider the following two sample, tab-delimited files: File_1: Abf1 YKL112w Abf1 YAL054c Abf1 YGL234w Ace2 YKL150w Ace2 YNL328c Cup9 YDR441c Cup9 YDR442w Cup9 YEL040w ... File 2: ... ABF1 YKL112W ACE2 YLR131C (9 Replies)
Discussion started by: gstuart
9 Replies

10. Shell Programming and Scripting

Perl: Search for string on line then search and replace text

Hi All, I have a file that I need to be able to find a pattern match on a line, search that line for a text pattern, and replace that text. An example of 4 lines in my file is: 1. MatchText_randomNumberOfText moreData ReplaceMe moreData 2. MatchText_randomNumberOfText moreData moreData... (4 Replies)
Discussion started by: Crypto
4 Replies
Login or Register to Ask a Question