Visit Our UNIX and Linux User Community


Grep with Special Characters


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Grep with Special Characters
# 1  
Old 11-26-2007
Grep with Special Characters

I need to sort a file, the sort is not a alphabetical sort, it's based on a predefined order which is read from a file called fSortOrder.

The format of the fSortOrder file is :
STARTPATH"
....
....

The file that needs to be sorted is called tmpUnsorted and contains data in the format :
<add key="STARTPATH" value="\\njros1a2226\LIFEPRO\V13\START" />
....
....

I read the fSortOrder file one line at a time and place this in a variable called lineMO. I use the line below to search the input for the variable :

isThere="$(grep $lineMO tmpUnsorted)"

This appears to work fine, but messes up the data, instead of placing
<add key="STARTPATH" value="\\njros1a2226\LIFEPRO\V13\START" /> in the variable.

<add key="STARTPATH" value="\njros1a2226\LIFEPRO\V13\START" /> is placed in the varialbe.

Is there anyway to fix this as the double \\ is vital and the file is useless without it.
# 2  
Old 11-26-2007
Try to replace
Code:
isThere="$(grep $lineMO tmpUnsorted)"

by
Code:
isThere="$(grep '$lineMO' tmpUnsorted)"

or
Code:
isThere=$(grep "$lineMO" tmpUnsorted)

# 3  
Old 11-26-2007
Using "$lineMo" does not work (tried it)

Using '$lineMO' also does not work because the ' ' negates the meaing of $ and searches for the string $lineMO in the file rather than the contents of the variable $lineMO
# 4  
Old 11-26-2007
grep with special characters

I beleive your code is already working. Try using:

isThere="$(grep $lineMO tmpUnsorted)"

and then check the varaible with:

print -r "$lineMO"

The -r will ignore special characters and you should see that the varaible does contain \\
# 5  
Old 11-26-2007
print -r $lineMO works fine, but for some reason it's putting spaces in the variable before the first characrer

Instead of looking like this :
<add key="STARTPATH" value="\\njros1a2226\LIFEPRO\V13\START" />

It looks like this
<add key=".........STARTPATH" value="\\njros1a2226\LIFEPRO\V13\START" />
*The dots represent the blank spaces that appear.

How do you remove a leading tab from a variable?
# 6  
Old 11-26-2007
The grep command is only going to return what it finds in tmpUnsorted so if there is not a tab in tmpUnsorted I would check your code to see where you have embeded it.

Removing a leading tab(specifally for your code):

TABLESS=$(print -r $isThere | sed 's/=" */="/') # Removes multiple whitspaces after ="

TAB=$(printf "\t")
TABLESS=$(print -r $isThere | sed "s/=\"$TAB/=\"/") # Removes single tab character after ="
# 7  
Old 11-27-2007
Cheers for the help guys, that's that sorted now. Smilie

Previous Thread | Next Thread
Test Your Knowledge in Computers #1005
Difficulty: Easy
Regarding a circle, one full turn of the circle is equal to 2 radians.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Grep exact match without period or other special characters

If I have a file like the following abc.1 abc abc_1 abc..1 abc*1 abc@1 abc def ghr def...... ddef 5466 def ed def** 123445 I`m trying to find exact words from the list abc def (4 Replies)
Discussion started by: ritakadm
4 Replies

2. Shell Programming and Scripting

grep lines having special characters

Hi, I have a file which has numerous lines and some of the lines having special characters in it. i want to grep the lines which are having special characters. say, one line looks like - %*()$#@"", | acbd antoher line looks like ***##^%! | efcg so these kind of lines are present... (5 Replies)
Discussion started by: rbalaj16
5 Replies

3. Shell Programming and Scripting

Is there anyway to grep any special characters from a file ?

Is there any command or shell script to grep any special character from a file ? I have a huge file containing millions of user names; the requirement is to find names containing special characters. #!/bin/bash for i in `cat username.txt` do #COMMAND to grep special character done ... (3 Replies)
Discussion started by: poga
3 Replies

4. Shell Programming and Scripting

Grep with special Characters

Need Help For GREP I have a file say g1.txt and content of file is below REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" /v NoDrives /t REG_DWORD /d 4 /f , REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" /v NoClose /t REG_DWORD /d 1 /f ,... (4 Replies)
Discussion started by: jalpasoni
4 Replies

5. UNIX for Advanced & Expert Users

Grep returning partial lines due to special characters

Hey guys, I have a file with an ID which I'm using to grep out the original record from another file. Problem is I have special characters in the original file, and grep is returning only a partial record. How can I get around this? Appreciate your help! Pete (3 Replies)
Discussion started by: peteroc
3 Replies

6. Shell Programming and Scripting

SED equivalent for grep -w -f with pattern having special characters

I'm looking for SED equivalent for grep -w -f. All I want is to search a list of patterns from a file. Also If the pattern doesn't match I do not want "null returned", rather I would prefer some text as place holder say "BLANK LINE" as I intend to process the output file based on line number. ... (1 Reply)
Discussion started by: novice_man
1 Replies

7. UNIX for Dummies Questions & Answers

locate special characters and digits using grep

Hello, i have a file called test hello1 "how" are you4 good"bye" good7bye i am trying to print all lines from test that either end with a digit or contain a double quote character anywhere on the line. i did grep -n '$' test and was able to print lines ending with digits. i also did... (2 Replies)
Discussion started by: hobiwhenuknowme
2 Replies

8. UNIX for Dummies Questions & Answers

Using GREP for special characters

Hi folks I am issuing the following command: grep "" * Looking for the characters \/:*?"<>|#+%& within all files in a directory, but the command fails being unhappy with pipe: ksh: 0403-057 Syntax error: `|' is not expected. How do I force the command to take the pipe | ? I guess... (2 Replies)
Discussion started by: daveaasmith
2 Replies

9. Shell Programming and Scripting

Grep not working - special characters??

I have a file that I am processing with a while loop from, in come cases the grep/sed command (strings record | grep “errorDetail” | sed 's&*errorDetail\(.*)\(/errorDetail\).*&\1&') works and produces the data I am after and in some it does not. I have inspected the data within the failing... (3 Replies)
Discussion started by: gugs
3 Replies

10. UNIX Desktop Questions & Answers

grep with special characters

Hi there I need to grep for a detail from a file. The pattern to search for involves escape sequences in it. This causes for the problem. grep "P\_SOME\_STRING\_SEARCH" filename Note, I have line like below in the file and expect it to grep. select * from my_system_param ... (3 Replies)
Discussion started by: guruparan18
3 Replies

Featured Tech Videos