Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除bash中给定行中的特定内容_Bash_Shell - Fatal编程技术网

删除bash中给定行中的特定内容

删除bash中给定行中的特定内容,bash,shell,Bash,Shell,我在下面把它作为输出 2017-04-10 12:23:00.307411 IP 124.108.16.209.443 > 192.168.180.3.44526: tcp 1209 2017-04-10 12:23:00.836184 IP 192.168.180.3.43095 > www.facebook.com.443: tcp 303 2017-04-10 12:23:09.948709 IP www.facebook.com.443 > 192.168

我在下面把它作为输出

2017-04-10 12:23:00.307411 IP 124.108.16.209.443 > 192.168.180.3.44526: tcp 1209    
2017-04-10 12:23:00.836184 IP 192.168.180.3.43095 > www.facebook.com.443: tcp 303   
2017-04-10 12:23:09.948709 IP www.facebook.com.443 > 192.168.180.3.47172: tcp 38    
2017-04-10 12:23:09.986789 IP 192.168.180.31.47172 > www.facebook.com.443: tcp 0       
我想要这样的输出

2017-04-10 12:23:00 IP 192.168.180.3 > www.facebook.com   
2017-04-10 12:23:09 IP 192.168.180.31 > www.facebook.com  

重要的是要删除IP单词后以字母开头的行,并删除IP单词后以192.168.180开头的行,基本上从上面的示例中,我只希望第2行和第4行作为输出

您可以尝试sed,类似这样的,它只是语法:

sed -e '/pattern here/ { N; d; }'
N和d是可以使用的命令

这将删除图案后的1行(包括带有图案的线条):

拍子=你的绳子

删除IP单词后以字母开头的行,以及 删除IPword之后不以192.168.180开头的行

awk进近:

awk '$4!~/^[[:alpha:]]/ && $4~/^192\.168\.180/' file
awk -v p=".[^.]+$" '$4!~/^[[:alpha:]]/ && $4~/^192\.168\.180/
     {$7=$8="";for(i=2;i<=6;i+=2)gsub(p,"",$i);print}' file

空格是awk中的默认字段分隔符

4美元~/^[[:alpha:]/

$4
-第四个字段
~-不匹配
/^[:alpha:][]/
-正则表达式,表示“以字母字符开头”

&&
-布尔“and”运算符。
boolean1和&boolean2如果boolean1和boolean2都为真,则为真

$4~/^192.168.180/
-如果第四个字段以
192.168.180开头,则匹配一行


其他方法:

要去除某些列的不需要部分,请使用以下方法:

awk '$4!~/^[[:alpha:]]/ && $4~/^192\.168\.180/' file
awk -v p=".[^.]+$" '$4!~/^[[:alpha:]]/ && $4~/^192\.168\.180/
     {$7=$8="";for(i=2;i<=6;i+=2)gsub(p,"",$i);print}' file
我想删除IP单词后以字母开头的行,并且(本质上)与保留以数字和数字开头的行的意思相同 删除IP word后不以192.168.180开头的行意味着保留其中包含with
IP 192.168.180
的行,基本上使第一个要求过时<代码>人工grep

DESCRIPTION
       grep searches the named input FILEs for lines containing a match to the
       given PATTERN. - - By default, grep prints the matching lines.
尝试:


你为自己做了什么?不是这些也不是那些,而是买我想要的怎么样<代码>grep“ip192.168.180”文件
我在谷歌上找不到与上述情况相关的任何信息。我没有找到詹姆斯·布朗坦克斯·罗曼,它帮助我删除了行。“你能给我解释一下这个命令吗?”维沙拉巴迪亚补充道explanation@VishalRabadiya,您是否需要从输出中剥离此零件
.443:tcp 303
?是的,Roman还希望在完全停止后剥离12:23:09.948709,即希望打印12:23:09,让我们来看看。
grep "IP 192.168.180" file
2017-04-10 12:23:00.836184 IP 192.168.180.3.43095 > www.facebook.com.443: tcp 303
2017-04-10 12:23:09.986789 IP 192.168.180.31.47172 > www.facebook.com.443: tcp 0