sed: -e expression #1, char 1: unknown command: `''

5,461

Try this,

line="this"
del=`echo "/"$line"/d"`
sed $del /home/example/fic > /home/example/fic

In your code, you are single quotes while assigning value to variable del. which will consider as a static string rather than executing it. We can use backticks or $() to execute it.

better way,

line="this"
sed -i "/$line/d" /home/example/fic
  • -i edit in line.
Share:
5,461
Tsifi Stifen
Author by

Tsifi Stifen

Updated on September 18, 2022

Comments

  • Tsifi Stifen
    Tsifi Stifen over 1 year

    I have already read a similar question, but there is no solution to my problem.

    I want to delete some line in some file I use sed in the script this is the code.

    line="this"
    del='echo "'/"$line"/d'"' #it's a AltGr+7 on AZERTY keyboard but for readability of the code I use '
    sed -i $del /home/example/fic.txt
    

    I also try:

    line="this"
    del='echo "/"$line"/d"'
    sed $del /home/example/fic > /home/example/fic
    

    but I have the same error:

    sed: -e expression #1, char 1: unknown command: `''
    
  • Tsifi Stifen
    Tsifi Stifen almost 5 years
    Thank you for your answer, I already note in the comment, I don't know how to add ` in the code and I use ' only for example. I use ` in my script but it doesn't work :)
  • Tsifi Stifen
    Tsifi Stifen almost 5 years
    it' s work when I use directly sed "/$line/d" /home/example/fic Thank you :)
  • Tsifi Stifen
    Tsifi Stifen almost 5 years
    thank you it's OK know :)
  • Siva
    Siva almost 5 years
    hope u have not declared line
  • Angel Todorov
    Angel Todorov almost 5 years
    Use $(...) instead of backticks -- easier to see that it's different from single quote.