首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从键盘上用输入模式打印每个块?

如何从键盘上用输入模式打印每个块?
EN

Stack Overflow用户
提问于 2018-06-22 07:37:59
回答 2查看 47关注 0票数 1

示例文件:

代码语言:javascript
运行
复制
TCP  192.168.56.224:80 rr
  -> 192.168.56.112:80            Route   1      0          0
  -> 192.168.56.113:80            Route   1      0          0
TCP  192.168.56.225:80 rr
  -> 192.168.56.109:80            Route   1      0          0
  -> 192.168.56.110:80            Route   1      0          0
TCP  192.168.56.226:80 rr
  -> 192.168.56.3:80              Route   1      0          0
UDP  192.168.56.224:80 rr
  -> 192.168.56.112:80            Route   1      0          0
  -> 192.168.56.113:80            Route   1      0          0
UDP  192.168.56.225:80 rr
  -> 192.168.56.109:80            Route   1      0          0
  -> 192.168.56.110:80            Route   1      0          0
UDP  192.168.56.226:80 rr
  -> 192.168.56.3:80              Route   1      0          0
  -> 192.168.56.120:80            Route   1      0          0

我希望根据从键盘输入的模式并使用awk或sed命令打印相应的TCP和UDP块。

示例:输入192.168.56.110:80值,然后打印结果是:

代码语言:javascript
运行
复制
TCP  192.168.56.225:80 rr
  -> 192.168.56.109:80            Route   1      0          0
  -> 192.168.56.110:80            Route   1      0          0
UDP  192.168.56.225:80 rr
  -> 192.168.56.109:80            Route   1      0          0
  -> 192.168.56.110:80            Route   1      0          0

请帮帮我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-22 08:12:05

下面是一种使用gnu awk的替代方法

代码语言:javascript
运行
复制
awk -v RS='(^|\n)(TC|UD)P[[:blank:]]' -v ip='192.168.56.110:80' 'index($0, ip) {
print RT $0}' file

代码语言:javascript
运行
复制
TCP  192.168.56.225:80 rr
  -> 192.168.56.109:80            Route   1      0          0
  -> 192.168.56.110:80            Route   1      0          0

UDP  192.168.56.225:80 rr
  -> 192.168.56.109:80            Route   1      0          0
  -> 192.168.56.110:80            Route   1      0          0 
票数 0
EN

Stack Overflow用户

发布于 2018-06-22 07:49:13

请你试着跟我说一下,如果这对你有帮助的话,请告诉我。

代码语言:javascript
运行
复制
cat script.ksh
echo "Please enter the ip address which you want to print:"
read value

awk -v val="$value" '/^TCP/||/^UDP/{value=""}!flag{value=value?value ORS $0:$0} $0 ~ val{flag=1} flag{print value;value=flag=""}'  Input_file

它将要求运行该脚本的人输入IP,当用户输入该脚本时,它将查看Input_file。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50982982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档