awk / escape character


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk / escape character
# 1  
Old 11-29-2006
awk / escape character

Hi
I'm trying to split a dir listing
eg
/home/foo1/foo2
I'm using ksh

I've tried
dir=/home/foo1/foo2
splitit=`echo $dir | awk -F '\/' '{print $1}'`
echo $splitit

nothing is output!
I have checked the escape character. The only one I have found is \

BTW `pwd` | awk -F \/ '{print $1}' works from cmdline


Why is this not working?

I want to split the string and then put it into an array, get the size of it and then get the right most directory

Last edited by OFFSIHR; 11-29-2006 at 12:08 PM..
# 2  
Old 11-29-2006
no need to 'escape'.
Given a sample input, if you need to echo 'foo2':
Code:
dir=/home/foo1/foo2
splitit=`echo $dir | awk -F '/' '{print $NF}'`
echo $splitit

the same could be accomplished easier using 'basename' - 'man basename'
# 3  
Old 11-29-2006
thank you for reply vgersh99 I am on Linux but '/' returns blank in inline awk

I look at basename, but is it only for directory name that you know already as argument passed?

thanks
# 4  
Old 11-29-2006
Quote:
Originally Posted by OFFSIHR
thank you for reply vgersh99 I am on Linux but '/' returns blank in inline awk

I look at basename, but is it only for directory name that you know already as argument passed?

thanks
I'm not following what's being said here - could you provide a sample input AND a desired output, pls?
# 5  
Old 11-29-2006
Quote:
Originally Posted by vgersh99
I'm not following what's being said here - could you provide a smple input AND a desired output, pls?
Sorry
I have used basename foo2 and it returns foo2

I did not see the NF on the end - now I get 6 (yes 6!) returned to this script
dir=/home/foo1/foo2
splitit=`echo $dir | awk -F '/' '{print $NF}'`
echo $splitit

when i use the script below blank is returned
dir=/home/foo1/foo2
splitit=`echo $dir | awk -F '/' '{print $1}'`
echo $splitit

desired output is foo2.
last folder name is only known when the script is run (its run from another script)

thanks
# 6  
Old 11-29-2006
Quote:
Originally Posted by OFFSIHR
Sorry
I have used basename foo2 and it returns foo2

I did not see the NF on the end - now I get 6 (yes 6!) returned to this script
dir=/home/foo1/foo2
splitit=`echo $dir | awk -F '/' '{print $NF}'`
echo $splitit
Hm...... I don't see where '6' would be returned...

Quote:
Originally Posted by OFFSIHR
when i use the script below blank is returned
dir=/home/foo1/foo2
splitit=`echo $dir | awk -F '/' '{print $1}'`
echo $splitit

desired output is foo2.
last folder name is only known when the script is run (its run from another script)
a 'blank' is what I would expect.
you're outputting '$1' - FIRST field. You have an ABSOLUTE path with the LEADING '/'.
What would be the FIRST field in a string '/a/b/c/d'?
It would be the string BEFORE the FIRST fieldSeparator. What is it in this case? It's the 'blank' character.
field1 -> 'blank'
field2 -> a
field3 -> b
field4 -> c
field5 -> d
Quote:
Originally Posted by OFFSIHR
thanks
# 7  
Old 11-29-2006
Quote:
Originally Posted by vgersh99
Hm...... I don't see where '6' would be returned...


a 'blank' is what I would expect.
you're outputting '$1' - FIRST field. You have an ABSOLUTE path with the LEADING '/'.
What would be the FIRST field in a string '/a/b/c/d'?
It would be the string BEFORE the FIRST fieldSeparator. What is it in this case? It's the 'blank' character.
field1 -> 'blank'
field2 -> a
field3 -> b
field4 -> c
field5 -> d
yes my print field separator number was wrong :-) thanks for explaining it well
I will now put the values in an array, get size of array and from last array value get name of last directory.
I think this is an over complicated way.
when I manned basename it seemed that you must give filename - this is unknown in my script
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Function to add escape character before specified character

Hi , I am looking for a function which will do the following. 1. I have a variable which will hold few special chracter like SPECIAL_CHARS="& ;"2. I have an escape character. ESCAPE_CHAR="\"3. Now when I passed some string in the function it will return the same string but now it will... (8 Replies)
Discussion started by: Anupam_Halder
8 Replies

2. Shell Programming and Scripting

ksh escape a character

friends, I have a situation where i am using a $RANDOM function along with the filename, I want this to be escaped by the OS in the first assignment (works as expected) and executed in the second assignment (does not execute $RANDOM) filename1=filename1_\$RANDOM echo $filename1... (3 Replies)
Discussion started by: Balaji M
3 Replies

3. Shell Programming and Scripting

Regex escape special character in AWK if statement

I am having issues escaping special characters in my AWK script as follows: for id in `cat file` do grep $id in file2 | awk '\ BEGIN {var=""} \ { if ( /stringwith+'|'+'50'chars/ ) { echo "do this" } else if ( /anotherString/ ) { echo "do that" } else { ... (4 Replies)
Discussion started by: purebc
4 Replies

4. Shell Programming and Scripting

escape character not working

I need to change a pattern with single quotes # echo "serversignature: 'On'" serversignature: 'On' I did # echo "serversignature: 'On'" | sed 's/.*serversignature.*/serversignature: 'Off'/' serversignature: Off The output I need is with single quotes. But its swallowing it. ... (2 Replies)
Discussion started by: anilcliff
2 Replies

5. Shell Programming and Scripting

replace \ (escape character)

All , i have input line as below . abc\ , ewioweioi \, and want the output as below removing the "\" abc , ewioweioi , could anyone help me out (2 Replies)
Discussion started by: expert
2 Replies

6. Shell Programming and Scripting

awk escape character

ll|awk '{print "INSERT INTO SCHEMA.TABLE_NAME VALUES (`"$9 "`,"$5");" }' INSERT INTO SCHEMA.TABLE_NAME VALUES (``,); INSERT INTO SCHEMA.TABLE_NAME VALUES (`TABLE_PARTITION_Y2010M03D06.dmp`,7923328); INSERT INTO SCHEMA.TABLE_NAME VALUES (`TABLE_PARTITION_Y2010M03D06.log`,1389); But I want ' in... (2 Replies)
Discussion started by: faruque.ahmed
2 Replies

7. Shell Programming and Scripting

Escape character in sed

Hello experts I am trying to write a shell script which will add ' ' to a unix variable and then pass it to oracle for inserting to a table. I am running the script as root and I have to do a su -c . The problem is the character ' is not recognised inside sed even after adding escape... (1 Reply)
Discussion started by: pvedaa
1 Replies

8. Shell Programming and Scripting

Escape character

Hi , I want to change space to ' in my script. I tried doing this, sed 's/ /\'/g' filename but i could not get it. can some one help me please. Thanks, Deepak (4 Replies)
Discussion started by: deepakpv
4 Replies

9. Shell Programming and Scripting

Escape character in vi?

I want to replace a string which contains "/" in vi but what is the escape character for forward slash? e.g. I have a text file with the contents below and I want to replace "/Top/Sub/Sub1" with "ABC". /Top/Sub/Sub1 The replace command I am using is ... (4 Replies)
Discussion started by: stevefox
4 Replies

10. UNIX for Dummies Questions & Answers

possible to escape the \ character in sed?

is it possible to escape the \ character in sed? right now I'm trying to replace all occurances of \ with \\ sed \"s|test|test_replacement|g\" file1 > output; #this works fine sed \"s|\\|\\\|g\" file1 > output; #this generates the following error: sed: -e expression #1, char 17:... (1 Reply)
Discussion started by: gammaman
1 Replies
Login or Register to Ask a Question