我正在尝试更改文件中特定行上的单个单词,但是将所有单词连接在一起时遇到了一些麻烦。
基本上,在文件的一行上有一个关键字“ firmware_revision”,并且在这一行(并且只有这一行)上,我想用“生产”一词代替“测试”一词。
所以我可以这样做:
grep 'firmware_revision' myfile.py | sed 's/test/production'
这将挑选出我想要的行并执行替换,但是我不知道如何将新行插入原始文件以替换旧行。我显然不能仅仅将其重定向回文件,那么该怎么办?
即使我使用临时文件,通过使用临时grep
文件,我也需要丢失文件中的所有其他数据,因此,我不再只能将所有文件重定向到临时文件,而是用临时文件替换原始文件。
编辑-有人要求更多信息
可以说我有一个像这样的文件
[
('key_name1', str, 'value1', 'Description'),
('key_name2', str, 'value2', 'Description'),
('key_name3', str, 'value3', 'Description'),
('firmware_revision', str, 'my-firmware-name-test', 'Firmware revision name')
]
现在,我想编写一个脚本(最好是单行代码),该脚本将找到包含“ firmware_revision”的行,并将该行中“ test”一词的所有实例更改为“ production”。“测试”一词可能在该文件的其他位置,我不希望更改这些内容。为了清楚起见,我想将上面的行更改为
('firmware_revision', str, 'my-firmware-name-production', 'Firmware revision name')
我该怎么做呢?
sed -i.bak '/firmware_revision/ s/test/production/' myfile.py
sed
是非常强大的功能,它既可以执行功能(也可以执行grep
替代功能),但是我们需要有关该行外观的更多信息以帮助您。