Delete the last word of a line in shell

16,177

Solution 1

If you want to delete the last word only off of the last line, then you can use:

sed -i '$s/\w*$//' test.db

If you want to delete the last word from the line for key3:

sed -i '/key3/s/\w*$//' test.db

Solution 2

Try this :

sed -i '1{s/[^ ]\+\s*$//}' file test.db

Solution 3

Here is an awk to remove last field:

echo "one two three" | awk '{$NF="";sub(/[ \t]+$/,"")}1'
one two

Solution 4

Deleting the last word of your line

since you are targeting the line key3 value3

  sed -i '/key3 value3/s/\S*$//' test.db

where \S is represents a digit that is not a space or whitespace.

Deleting the last word of a particular line (General rule)

   sed -i '/line pattern/s/\S*$//' test.db

line pattern represents a pattern that is found on the line that you want to target

Share:
16,177
03t02
Author by

03t02

Updated on June 15, 2022

Comments

  • 03t02
    03t02 almost 2 years

    I'm looking for how to delete the last word of a line in shell ! I use sed but I only found the way how delete the lase word of every line, but not a specify line. For exemple: I have a file test.db

    key1 value1
    key2 value2
    key3 value3
    

    And I just want to delete value3

    sed -i s/'\w*$'// test.db
    

    This line just delete the last word of every line !