希望你这段时间过得好。问题是我想在我的 txt 文件中注释一些行。我有一个代码可以注释和取消注释多行,但我不知道如何获取公司名称。我的文本文件有以下方案:lunar_static KKK_<countryname>_NUM 08.00.name
lunar_static KKK_USA_NUM 08.00.Winter
lunar_static KKK_ITALY_NUM 08.Winter
lunar_static KKK_ITALY_NUM 08.00.Spring
lunar_static KKK_ITALY_NUM 08.00.Autumn
lunar_static KKK_SPAIN_NUM 08.00.Winter
lunar_static KKK_SPAIN_NUM 08.00.Spring
lunar_static KKK_FRANCE_NUM 08.00.Autumn
lunar_static KKK_FRANCE_NUM 08.00.Autumn
lunar_static KKK_ITALY_NUM 08.00.Ferari-taxi
lunar_static KKK_ITALY_NUM "/^08\\.00\\.Delta\\ M$/"
lunar_static KKK_ROMANIA_NUM "/^08\\.00\\.Delta\\ M$/"
lunar_static KKK_ITALY_NUM "/^08\\.00\\.Red\\_Park$/"
我想用 Autumn、Ferari-taxi、Delta M、Red_Park 来评论意大利。我知道如何用 sed 评论几个名字
sed -i '/Winter\|Spring/s/^/#/' file2.txt
并取消注释
sed -i '/Spring/s/^#//' file2.txt
但它会选择所有名称,而不考虑国家/地区名称。不知道怎么去国家。预期产出
lunar_static KKK_USA_NUM 08.00.Winter
lunar_static KKK_ITALY_NUM 08.Winter
lunar_static KKK_ITALY_NUM 08.00.Spring
#lunar_static KKK_ITALY_NUM 08.00.Autumn
lunar_static KKK_SPAIN_NUM 08.00.Winter
lunar_static KKK_SPAIN_NUM 08.00.Spring
lunar_static KKK_FRANCE_NUM 08.00.Autumn
lunar_static KKK_FRANCE_NUM 08.00.Autumn
#lunar_static KKK_ITALY_NUM 08.00.Ferari-taxi
#lunar_static KKK_ITALY_NUM "/^08\\.00\\.Delta\\ M$/"
lunar_static KKK_ROMANIA_NUM "/^08\\.00\\.Delta\\ M$/"
#lunar_static KKK_ITALY_NUM "/^08\\.00\\.Red\\_Park$/"
我很高兴收到每一个建议。谢谢你!
答案1
您需要在搜索ITALY
词中包含您的目标国家/地区,对备选方案进行分组并允许两个搜索词(Autumn|Delta....)
之间的字符.*
sed -E '/ITALY.*(Autumn|Delta.. M|Red.._Park|Ferari-taxi)/s/^/#/' file1
\
这是为了避免逃脱而进行的轻微作弊
sed -E '/ITALY.*(Autumn|Delta\\\\ M|Red\\\\_Park|Ferari-taxi)/s/^/#/' file1
-i
通过包含 in place标志来在同一文件中进行更改sed
sed -i -E .....
编辑您可以将此作为另一个问题发布,但是...
“……是否可以在\\
不输入\\\\
sed 的情况下找到单词 ?……”换句话说,没有逃跑他们。
不。原因是这里:
'\' 字符后跟某些普通字符时,具有特殊含义
因此,在您的匹配字符串中,如果 后面的字符\
是形成保留配对之一(例如\+
, \?
, \n
)的字符,如何sed
知道您正在查找文字\n
还是换行符?
因此,每个\
要按字面意思读取的字符都必须进行转义,以sed
明确地知道它不是任何保留字符序列的一部分。