How do I delete a last character from input line under UNIX / Linux using sed tool? My sample scientific input data line is as follows and I’d like to get rid of last + character only:
379100.46+521870.11+363838.75+382869.59+
How do I used sed to delete last + character?
Use it as follows:
echo "379100.46+521870.11+363838.75+382869.59+" | sed '$s/.$//'
If you would like to calculate final result, enter:
echo "379100.46+521870.11+363838.75+382869.59+" | sed '$s/.$//' | bc -l
🐧 Get the latest tutorials on Linux, Open Source & DevOps via RSS feed or Weekly email newsletter.
🐧 11 comments so far... add one ↓
🐧 11 comments so far... add one ↓
Category | List of Unix and Linux commands |
---|---|
File Management | cat |
Firewall | Alpine Awall • CentOS 8 • OpenSUSE • RHEL 8 • Ubuntu 16.04 • Ubuntu 18.04 • Ubuntu 20.04 |
Network Utilities | dig • host • ip • nmap |
OpenVPN | CentOS 7 • CentOS 8 • Debian 10 • Debian 8/9 • Ubuntu 18.04 • Ubuntu 20.04 |
Package Manager | apk • apt |
Processes Management | bg • chroot • cron • disown • fg • jobs • killall • kill • pidof • pstree • pwdx • time |
Searching | grep • whereis • which |
User Information | groups • id • lastcomm • last • lid/libuser-lid • logname • members • users • whoami • who • w |
WireGuard VPN | Alpine • CentOS 8 • Debian 10 • Firewall • Ubuntu 20.04 |
Hi,
Please help me for this.
input : 379100.46+521870.11+363838.75+382869.59
output : 379100.46+521870.11
I would like remove last the character based last two delimiter. Please help me.
Try it:
echo $text | sed -e ‘s/\(.*\)../\1/’
That was exactly what I was searching for, thanks!
Can you explain why it works, though? I use sed quite often but I don’t know what the
does, I always do
.
Konrad,
The “$” (dollar sign; I usually call it “cash”) is a marker or flag that tells sed to jump to the end of a line and edit something in the vicinity of the last character in it. I believe its counterpart for the beginning of a line is “^” (up-pointing carat), but don’t quote me on that. These markers are part of the sed program itself, which can present a problem only when the characters they represent are the ones you want to “sed out” of a string — sometimes even escaping them doesn’t work in those instances.
Hope this helps.
BZT
mandre on ivorde.ro offers other approaches here.
http://www.ivorde.ro/How_to_remove_first_last_character_from_a_string_using_SED-75.html
Evidently the ‘$s’ syntax at the beginning of the sed command isn’t common or even necessary. A simple
usually suffices.
(The above is from one of the comments, not ivorde’s primary text.)
BZT
I have file…called file1 in the below format
1,abc,2,te1,gem,
2,3,b,r,4
4,5,3,t,r,
9,8,y,6,5,
7,5,1,e,5
means at the end of some of the lines ,i don’t have comma(,)
now can i place comma in those lines so that my o/p looks like below
1,abc,2,te1,gem,
2,3,b,r,4,
4,5,3,t,r,
9,8,y,6,5,
7,5,1,e,5
sorry the o/p should be
1,abc,2,te1,gem,
2,3,b,r,4,
4,5,3,t,r,
9,8,y,6,5,
7,5,1,e,5,
how to add a new column(first column) with variable string value to an existing file
input file name ….filename1
format
col1,col2,col3,col4
1,2,3,4
5,4,3,2
m,g,f,r
o/p file format
col0,col1,col2,col3,col4
abc,1,2,3,4
abc,4,3,2,5
abc,8,7,6,3
abc,9,8,6,1
‘abc’ value will change based on the input to the INPUT file
can you pls help
Deleting the + at the end is ok but what if there’s no + sign there, wouldn’t you delete the 9 then? and how to solve it so that only the + is deleted?
@randomhello:
No problem, just replace the dot character ‘.’ which stands for “any character” by a ‘+’:
sed ‘s/+$//’
how can i remove last but one character from each line in given file