Solved

remove quotes from beginning and end of file using sed or awk

Posted on 2013-06-14
16
526 Views
Last Modified: 2013-06-14
Greetings,
I have a freetext.txt file that has like 4000 characters.
There are double quotes (") throughout the document.

To include one in the front, and one in the end.

I want to remove the one in the front and the one in the end.
I heard sed and awk are good for things like this...

I'm still learning those two...
does anyone have experience in this?
Thanks.
0
Comment
Question by:Evan Cutler
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 4
  • 3
  • +2
16 Comments
 
LVL 15

Expert Comment

by:Ess Kay
ID: 39248014
try regular expression?
0
 
LVL 9

Author Comment

by:Evan Cutler
ID: 39248031
in a bash?
0
 
LVL 15

Expert Comment

by:Ess Kay
ID: 39248039
0
Ransomware: The New Cyber Threat & How to Stop It

This infographic explains ransomware, type of malware that blocks access to your files or your systems and holds them hostage until a ransom is paid. It also examines the different types of ransomware and explains what you can do to thwart this sinister online threat.  

 
LVL 31

Expert Comment

by:farzanj
ID: 39248043
You can easily do it with sed but you have to give a sample of what you really mean
0
 
LVL 15

Expert Comment

by:Ess Kay
ID: 39248044
0
 
LVL 9

Author Comment

by:Evan Cutler
ID: 39248049
my text files are different each time, but below is something that I would have in it.

"This is the "good times"; and this is the "bad times"."

I want the quotes at the beginning and the end to be removed, but quotes at "good times" and "bad times" to remain.
0
 
LVL 31

Expert Comment

by:farzanj
ID: 39248053
You can do it like

sed -i 's/^"//' filename

will remove " at the beginning of line
0
 
LVL 9

Author Comment

by:Evan Cutler
ID: 39248081
that's awesome farzanj,
can you do that for both ends at the same time?

Or a repeatable thing that will overwrite the original filename?
Thanks
0
 

Expert Comment

by:brianash
ID: 39248188
sed -i 's/^"\(.*\)"$/\1/' filename

The ^" matches the first quote
The \(.*\) matches the body of the text you want to keep
The "$ matches the quote at the end of the line

Using -i with sed makes it replace the content in the original file.

This is for files that are all on one line.  
"this is the "good times"; and this is the "bad times"."

It won't work if your file is like this:
"this is the "good times"; and thi
s is the "bad times"."

Do you need one that works with multi-lines?
0
 
LVL 9

Author Comment

by:Evan Cutler
ID: 39248209
yes...I expect my files to come in with CRLFs in there as well...
Thank you so much.
0
 
LVL 31

Accepted Solution

by:
farzanj earned 500 total points
ID: 39248279
For both ends:

sed -i 's/^"//";s/"$//' filename

Open in new window

0
 
LVL 9

Author Closing Comment

by:Evan Cutler
ID: 39248288
Thank you my friend.
you are awesome.

Most appreciated.

Evan
0
 

Expert Comment

by:brianash
ID: 39248315
It doesn't work, though.
I don't think sed is going to work for you, I think you need awk.
i couldn't get farzanj's solution to run, but even so, it would remove the quote at the beginning and end of each line in a file, rather that the first quote at the beginning of the file and the one at the end of the file.
If you have input:
"This is "a test"
and "more lines"."

you would end up with:
This is "a test
and "more lines".

missing the quote after the word, test

The result I think you are looking for is
This is "a test"
and "more lines".

Which his solution (or mine) does not give.
I think you need awk.  I will work on something for you.
0
 
LVL 31

Expert Comment

by:farzanj
ID: 39248328
You are welcome Evan.

In case you want to remove any " you could use.

sed -i 's/"//g' filename

Open in new window


Hope it helps.  Cheers!
0
 
LVL 19

Expert Comment

by:simon3270
ID: 39248332
One tiny tweak - this will remove double quotes at the start and end of other lines, e.g. the " at the end of the first line in:
"This is the "good"
this is the "bad"."

Open in new window

if you really only want the " at the start of the first line, and the " at the end of the last, to be removed, use:
sed -i '1s/^"//;$s/"$//' file

Open in new window

0
 

Expert Comment

by:brianash
ID: 39248351
Nice work, simon3270
0

Featured Post

What is SQL Server and how does it work?

The purpose of this paper is to provide you background on SQL Server. It’s your self-study guide for learning fundamentals. It includes both the history of SQL and its technical basics. Concepts and definitions will form the solid foundation of your future DBA expertise.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Linux users are sometimes dumbfounded by the severe lack of documentation on a topic. Sometimes, the documentation is copious, but other times, you end up with some obscure "it varies depending on your distribution" over and over when searching for …
In the first part of this tutorial we will cover the prerequisites for installing SQL Server vNext on Linux.
Learn how to get help with Linux/Unix bash shell commands. Use help to read help documents for built in bash shell commands.: Use man to interface with the online reference manuals for shell commands.: Use man to search man pages for unknown command…
Learn how to navigate the file tree with the shell. Use pwd to print the current working directory: Use ls to list a directory's contents: Use cd to change to a new directory: Use wildcards instead of typing out long directory names: Use ../ to move…

707 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question