我有一个文件如下:
mime PI Name: ISHO SUCCESS RATE RT, Value: 95.663826
scr PI Name: RRC Access Failures due to UU, Value: 0.13394141
prog PI Name: RRC Access Failures due to UU, Value: 0.16077702
sch PI Name: RRC Access Failures due to UU, Value: 0.11781933
我想删除文本PI
直到Value:
.我试过
sed '/<PI>/,/<\/Value:>/d'
有什么帮助吗?
答案1
用空字符串替换从PI
到 的所有内容:Value:
sed 's/PI.*Value://'
答案2
使用d
in 命令sed
将删除整行。另外,我不确定你为什么使用<
and >
。也许您将它们与用于表示单词边界的and\<
混淆了?在这种情况下,您应该知道这两种类型的单词边界(开头和结尾)的用途。所以你可以写这样的东西:\>
grep
sed
\b
sed -i 's/\bPI\b.*\bValue:\b//' your_file
为了获得额外的鲁棒性,我将使用perl
的延迟量化,以便您只删除第一次出现和 第一次出现.
之间的文本。当然,这一切都取决于您的用例。PI
Value:
perl -pi -e 's{ \b PI \b .*? \b Value: \b}{}x' your_file
答案3
使用下面的代码删除模式之间的多条线(包括带有模式的线):
sed "/PI/,/Value:/d" your_file
如果你想直接修改your_file:
sed -i "/PI/,/Value:/d" your_file