我想删除字符串中的第二个单词。什么是最好的方法? 我可以使用"替代"为了这?非常感谢您的回答!
hostname1: test.20330.9861.runscript: warning: this option is disabled in the BIOS;
期望的输出:
hostname1: warning: this option is disabled in the BIOS;
答案 0 :(得分:1)
删除字符串中的第二个单词
$line =~ s/ \S+//;
答案 1 :(得分:1)
您的输出显示您不想删除每个第二个单词,只是 第二个单词。在这种情况下,请使用
之一$ perl -lane '@F[1]=""; print "@F"' file
hostname1: warning: this option is disabled in the BIOS;
或者,如果是较大的脚本的一部分:
$line=~s/( \S+)//;
或者,如果在文件上运行,则使用awk
可能更简单:
$ awk '{$2="";}1' file
hostname1: warning: this option is disabled in the BIOS;
答案 2 :(得分:0)
以下正则表达式可用于删除第二个单词s/\S\K\s+\S+//;
。
请注意它如何处理第一个单词前面有前导空格的情况:
use strict;
use warnings;
while (<DATA>) {
# Remove 2nd Word
s/\S\K\s+\S+//;
print;
}
__DATA__
hostname1: test.20330.9861.runscript: warning: this option is disabled in the BIOS;
hostname1: test.20330.9861.runscript: warning: this option is disabled in the BIOS;
输出:
hostname1: warning: this option is disabled in the BIOS;
hostname1: warning: this option is disabled in the BIOS;