Handle special characters in awk -F


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Handle special characters in awk -F
# 8  
Old 04-27-2015
you're likely using this in a shell program that already contains this string in a variable? if not, where is the string, a stream? a file?

how i'd solve this in shell variable:

Code:
$ remove='/c+/d'; var=/a/b/c+/d; echo "${var%"$remove"}"
/a/b

# 9  
Old 04-27-2015
OK. So we now know that you have to variables. Let's call them WholePath and TrailingPath. And, you want to set another variable (let's call it ParentPath) to the initial part of $WholePath with the contents of $TrailingPath removed from its end.

There are several ways to do this, including but not limited to: awk, expr, sed, and various shell parameter expansions. Some are much simpler and some are much faster than others depending on additional information that you haven't shared with us yet:
  1. What operating system are you using?
  2. What shell are you using?
  3. What is your shell's version number? (For instance, if you shell is bash or ksh, what is the output from bash --version or ksh --version, respectively?)
  4. Is $TrailingPath always present in $WholePath? Or, do you need to determine if $TrailingPath is present in $WholePath and set ParentPath to the first part of $WholePath if it is present and to the entire contents of $WholePath if it isn't?
# 10  
Old 04-27-2015
Quote:
OK. So we now know that you have to variables. Let's call them WholePath and TrailingPath . And, you want to set another variable (let's call it ParentPath ) to the initial part of $WholePath with the contents of $TrailingPath removed from its end.
Bingo, the precise requirement.

1. OS are FreeBSD & Ubuntu Linux 12.x
2. Bash
3. Version 3.2.39 & higher
4. That's not a mandate. TrailingPath can or cannot be present in the WholePath
# 11  
Old 04-28-2015
So, neutronscott's suggestion should do what you want:
Code:
#!/bin/bash
WholePath="/a/b/c+/d"
TrailingPath="/c+/d"
ParentPath=${WholePath%"$TrailingPath"}
printf '    with matching TrailingPath: "%s"\n' "$ParentPath"
TrailingPath="/no/match"
ParentPath=${WholePath%"$TrailingPath"}
printf 'with non-matching TrailingPath: "%s"\n' "$ParentPath"

which produces the output:
Code:
    with matching TrailingPath: "/a/b"
with non-matching TrailingPath: "/a/b/c+/d"

# 12  
Old 04-28-2015
Thanks
Works good with the initial tests.

Will integrate this with our main logic & get back in case of any issues.
Thanks again Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Awk: split column if special characters

Hi, I've data like these: Gene1,Gene2 snp1 Gene3 snp2 Gene4 snp3 I'd like to split line if comma and then print remaining information for the respective gene. My code: awk '{ if($1 ~ /,/){ n = split($0, t, ",") (7 Replies)
Discussion started by: genome
7 Replies

2. Shell Programming and Scripting

awk conditions failing (special characters?)

This is really frustrating because I can't figure it out. I'm running a health check script. One of the items I'm checking is the amount of memory on a server. I use the free command, which outputs something like this (excerpt) Mem: 100 100 100 100 Swap: 100 100 100 100 In my debugging... (5 Replies)
Discussion started by: JustaDude
5 Replies

3. Shell Programming and Scripting

awk match shell variable that contains special characters?

How to match a shell variable that contains parenthesis (and other special characters like "!") file.txt contains: Charles Dickens Matthew Lewis (writer) name="Matthew Lewis (writer)"; awk -v na="$name" ' $0 ~ na' file.txt Ideally this would match $name in file.txt (in this... (3 Replies)
Discussion started by: Mid Ocean
3 Replies

4. UNIX for Dummies Questions & Answers

awk for removing special characters and extra commas

Hi, I have a .csv file which as empty lines with comma and some special characters in 3rd column as below. Source data 1,2,3,4,%#,6 ,,,,,, 1,2,3,4,5,6 Target Data 1,2,3,4,5,6I need to remove blank lines and special charcters I am trying to get this using the below awk awk -F","... (2 Replies)
Discussion started by: shruthidwh
2 Replies

5. Shell Programming and Scripting

Sed or awk : pattern selection based on special characters

Hello All, I am here again scratching my head on pattern selection with special characters. I have a large file having around 200 entries and i have to select a single line based on a pattern. I am able to do that: Code: cat mytest.txt | awk -F: '/myregex/ { print $2}' ... (6 Replies)
Discussion started by: usha rao
6 Replies

6. Shell Programming and Scripting

awk loop: display special characters

Hi everybody; I have a code and this fetches data from first.txt,modify it and outputs it to second.txt file. l awk 'NR>1 {print "l ./gcsw "$1" lt all lset Data="$2" Value "$3}' /home/gcsw/first.txt > /home/gcsw/second.txt this outputs as: l ./gcsw 123 lt all lset Data=456 Value 789 ... (1 Reply)
Discussion started by: gc_sw
1 Replies

7. Shell Programming and Scripting

awk print $1 escape all special characters

I'm using awk '{print $1}' and it works most of the time to print the contents of a mysql query loop, but occationally I get a field with some special character in it, is there a way to tell awk to ignore all special characters between my FS? I have >186K records, so building a list of ALL special... (6 Replies)
Discussion started by: unclecameron
6 Replies

8. Shell Programming and Scripting

awk search pattern with special characters passed from CL

I'm very new to awk and sed and I've been struggling with this for a while. I'm trying to search a file for a string with special characters and this string is a command line argument to a simple script. ./myscript "searchpattern" file #!/bin/sh awk "/$1/" $2 > dupelistfilter.txt sed... (6 Replies)
Discussion started by: cue
6 Replies

9. Shell Programming and Scripting

Handling special characters using awk

Hi all, How do I extract a value without special characters? I need to extract the value of %Used from below and if its greater than 80, need to send a notification. I am doing this right now..Its giving 17%..Is there a way to extract the value and assign it to a variable in one step? df |grep... (3 Replies)
Discussion started by: sam_78_nyc
3 Replies

10. Shell Programming and Scripting

awk/sed with special characters

i have this script that searches for a pattern. However it fails if the pattern includes some special characters. So far, it fails with the following strings: 1. -Cr 2. $Mj 3. H'412 would a sed or awk be more effective? i don't want the users to put the (\) during the search (they... (5 Replies)
Discussion started by: apalex
5 Replies
Login or Register to Ask a Question