In Vi "sed" substitute word on a specific line


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting In Vi "sed" substitute word on a specific line
# 1  
Old 11-09-2015
Code In Vi "sed" substitute word on a specific line

i need to substitute word on a specific line.
I was able to do it on command line like below but it is not working in vi.
command line like below:
Code:
sed -e '8s/table_name/schema.table_name/' file_name.

in vi table_name and schema are my positional parameters that i pass into the
script.

here is what i have in my script.

Code:
Sed -e '8s/$table_name/$schema.$table_name/' file_name > file_new

Thank you
PT.

Last edited by pimmit22043; 11-09-2015 at 01:19 PM..
# 2  
Old 11-09-2015
please try this
:8s/table_name/schema.table_name/' file_name
# 3  
Old 11-09-2015
Thank you for reply.

I added to the script as follows.
':8s/$table_name/$schema.$table_name/' file_name > file_new
it has give error.
# 4  
Old 11-09-2015
Leave off the file stuff, I'm guessing your just wanting the substitution intereactively for the buffer currently being edited in vi

so...

From inside of vi the following command should work (assuming you've escaped out of insert mode and are in command mode):

Code:
:8s/table_name/schema.table_name/

# 5  
Old 11-09-2015
shell script positional parameters have to be inside double quotes and singe quotes when using the sed.

below is code:

Code:
schema_name=1
table_name=2

sed -e '8s/'"$table_name"'/"$schema_name"'.'"$table_name"'/' input_file

Smilie

Last edited by Don Cragun; 11-09-2015 at 04:25 PM.. Reason: Add COE tags again.
# 6  
Old 11-09-2015
Quote:
Originally Posted by pimmit22043
shell script positional parameters have to be inside double quotes and singe quotes when using the sed.

below is code:

Code:
schema_name=1
table_name=2

sed -e '8s/'"$table_name"'/"$schema_name"'.'"$table_name"'/' input_file

Smilie
I think you confused all of us with the references to vi when you are not using vi at all.

Your sed command is doing a lot of unnecessary switching between single quotes and double quotes. You can get exactly the same results as the sed command above just using:
Code:
sed -e "8s/$table_name/$schema_name.$table_name/" input_file

With the values you're using in this example, no quotes are needed at all. But if $table_name or $schema_name could expand to strings containing whitespace characters or characters that could have special meaning to the shell if they aren't quoted, the double quotes protect you in that case. The key point is that the shell doesn't expand variables inside single quotes, so you have to use double quotes instead of single quotes if you want sed to see the table_name and schema_name variables expanded in your sed substitute command.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Add the word "prefix" to beginning of line using sed

SUSE linux bash shell this works test -d /tmpp && echo "directory exists" || echo "directory doesn't exists" |sed -e "s/^/prefix /" prefix directory doesn't exists but why doesn't this work? test -d /tmp && echo "directory exists" || echo "directory doesn't exists" |sed -e... (3 Replies)
Discussion started by: snoman1
3 Replies

2. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

3. Shell Programming and Scripting

how to use "cut" or "awk" or "sed" to remove a string

logs: "/home/abc/public_html/index.php" "/home/abc/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" how to use "cut" or "awk" or "sed" to get the following result: abc abc xyz xyz xyz (8 Replies)
Discussion started by: timmywong
8 Replies

4. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

5. Shell Programming and Scripting

How do I grep with sed and substitute a "#" on that line

Hey all, I am trying to disable a certain cronjob before I run a backup. I want to be able to add/remove a "#" from the beginning on the crontab line it is located on. Here is the crontab: 46 11 * * * /etc/webmin/cron/tempdelete.pl @daily /etc/webmin/time/sync.pl */5 * * * *... (4 Replies)
Discussion started by: eg mike
4 Replies

6. Shell Programming and Scripting

cat $como_file | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g'

hi All, cat file_name | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g' Can this be done by using sed or awk alone (4 Replies)
Discussion started by: harshakusam
4 Replies

7. Shell Programming and Scripting

How to substitute "\" by "\/" using SED?

Input: a/b/c Output required: a\/b\/c This does not work: sed s/'\/'/'\//'/g (6 Replies)
Discussion started by: indianjassi
6 Replies

8. Shell Programming and Scripting

Can "sed" substitute word on a specific line?

Hello experts, I know line number of the word I want to replace. Can "sed" substitute word on a specific line? As well, can sed substitute words inside a specific patten. ex. <word>lalala</word> #replace anything between <word> and </word> minifish (2 Replies)
Discussion started by: minifish
2 Replies

9. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies

10. Shell Programming and Scripting

sed substitute / for \ : error "Function can not be parsed"

Hello all, I have a weird issue when trying to substitute the slashes into backslashes. If I execute this on the command-line (bash / ksh) I get the path correctly translated with backslashes instead of slashes. > echo $PWD | sed 's/\//\\/g' However, when I put this in my script to... (3 Replies)
Discussion started by: candyflip2000
3 Replies
Login or Register to Ask a Question