我使用以下sed命令line number从文件中删除字符串
sed -i s'/line number//g' file
Run Code Online (Sandbox Code Playgroud)
但我需要改变 sed语法,以便line number
只删除文件的最后一行?
编辑:命令替换对于令人惊讶的行为不是必需的,尽管它是最常见的用例.同样的问题适用于echo "'!b'"
b=a
# Enable history substitution.
# This option is on by default on interactive shells.
set -H
echo '!b'
# Output: '!b'
# OK. Escaped by single quotes.
echo $(echo '!b')
# Output: '!b'
# OK. Escaped by single quotes.
echo "$(echo '$b')"
# Output: '$b'
# OK. Escaped by single quotes.
echo "$(echo '!b')"
# Output: history expands
# BAD!! WHY??
Run Code Online (Sandbox Code Playgroud)
!什么?echo "$(echo '$b')"呢?!和之间有什么区别$?echo $(echo …我想sed只是文本文件的最后一个匹配模式.
输入文件:
boy
boy
girl
boy
Run Code Online (Sandbox Code Playgroud)
输出文件:
boy
boy
girl
boys
Run Code Online (Sandbox Code Playgroud) 我正在用sed进行查找和替换,用BASH变量替换BASH变量$a(当在新行的开头时)$b:
sed -i "s#^$a#$b#" ./file.txt
Run Code Online (Sandbox Code Playgroud)
这取代了所有匹配^$a.如何只替换^a整个文件中的第一个匹配项?