我有该文本#!/usr/bin/env python
,我想python
用python3
(不使用正则表达式)替换它,但我想确保该文本位于行末。
我尝试了这个命令:
sed -i 's/python\n/python3\n/g' a.txt
但它不会替换文本。我使用十六进制转储确保后面python
有 0x0a (\n)
请问我能做什么?
答案1
使用$
not\n
来匹配行尾:
sed -i 's/python$/python3/' a.txt
您不需要g
修饰符(每行只能有一个行尾),但您可能希望将替换限制在文件的第一行,或者以 开头的行#!
:
sed -i '/^#!/s/python$/python3/' a.txt
默认情况下,sed 逐行读取输入,因此换行符本身永远不会包含在模式缓冲区中。但是,$
正则表达式锚点表示行尾。