vage78
asked on
I want to make a shell script (bourne)
I want to make a script in order to strip the last spaces of ever line of my file
for example I have:
jjj@hotmail.com_ _ _ _ _ _
kk23@hotmail.com_ _ _ _ _
luuu78a@hotmail.com_ _ _
and I would like to have as result the following:
jjj@hotmail.com
kk23@hotmail.com
luuu78a@hotmail.com
for example I have:
jjj@hotmail.com_ _ _ _ _ _
kk23@hotmail.com_ _ _ _ _
luuu78a@hotmail.com_ _ _
and I would like to have as result the following:
jjj@hotmail.com
kk23@hotmail.com
luuu78a@hotmail.com
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
sed -e 's/ *$//' input_file
^ ^
search and replace: all space characters at the end of the line with NULL ... this is simple sed syntax
^ ^
search and replace: all space characters at the end of the line with NULL ... this is simple sed syntax
ASKER
Hi sunnycoder
I forgot to tell you that The character I wrote with the sign _ is
space character. I don't know if this would change your command
I forgot to tell you that The character I wrote with the sign _ is
space character. I don't know if this would change your command
I knew that
sed -e 's/ *$//' input_file
^ this is space char here
sed -e 's/ *$//' input_file
^ this is space char here
ASKER
In order to reconfirm what we said
1)I want to cutt of the spaces which exist an at every line at the last positions of every line (after every email address)
2)What exactly does *$
3) why you are using mv -f output_file input_file
1)I want to cutt of the spaces which exist an at every line at the last positions of every line (after every email address)
2)What exactly does *$
3) why you are using mv -f output_file input_file
I suggest you try running the script
1)I want to cutt of the spaces which exist an at every line at the last positions of every line (after every email address) --- this is what the script does
2)What exactly does *$
it means all instances of space followed by end of line
3) why you are using mv -f output_file input_file
sed will produce output /edited file to stdout .. we redirect it to another file and then replace input file with it
1)I want to cutt of the spaces which exist an at every line at the last positions of every line (after every email address) --- this is what the script does
2)What exactly does *$
it means all instances of space followed by end of line
3) why you are using mv -f output_file input_file
sed will produce output /edited file to stdout .. we redirect it to another file and then replace input file with it
Hi vage78.
Perhaps I can clarify some of your questions about sunnycoder's solution.
Where, sunnycoder wrote:
sed -e 's/ *$//' input_file > output_file
mv -f output_file input_file
I would write it as
sed 's/ *$//' input_file >output_file && mv output_file input_file
The -e option on sed is not needed if you are just doing a single replacement and the -f flag on mv is not needed either.
So the sed regular expression translates to:
' *' - means match zero or more spaces
'$' - means match the end of the line
so putting it together, it is matching zero or more spaces to the end of the line. This is then replaced with nothing, effectively deleting them.
Perhaps I can clarify some of your questions about sunnycoder's solution.
Where, sunnycoder wrote:
sed -e 's/ *$//' input_file > output_file
mv -f output_file input_file
I would write it as
sed 's/ *$//' input_file >output_file && mv output_file input_file
The -e option on sed is not needed if you are just doing a single replacement and the -f flag on mv is not needed either.
So the sed regular expression translates to:
' *' - means match zero or more spaces
'$' - means match the end of the line
so putting it together, it is matching zero or more spaces to the end of the line. This is then replaced with nothing, effectively deleting them.
HI
I think below swd command will give you the desired output
sed 's/ .*$//g' inputfile >output file
Regards
sagar
I think below swd command will give you the desired output
sed 's/ .*$//g' inputfile >output file
Regards
sagar
sagar24.
Your solution won't work as it will match the first space and delete everything up to the end of the line.
Your solution won't work as it will match the first space and delete everything up to the end of the line.
ASKER
Can you please explaine me the parameters of your command?
Thank you