首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果文件中不包含字符串,如何将其附加到文件中?

如果文件中不包含字符串,如何将其附加到文件中?
EN

Stack Overflow用户
提问于 2013-09-21 10:15:16
回答 2查看 432关注 0票数 3

主角

  • 行政管理
  • 管道
  • Cron守护进程
  • 一堆文本处理实用程序
  • netstat
  • >> Scribe

设置

Cron重复执行相同的任务,强制一个无辜的netstat显示网络状态(netstat -n)。管道随后必须获取信息并将其传递给身份文本处理实用程序(| grep tcp | awk '{ print $5 }' | cut -d "." -f-4)。>>必须将重要的结果抄写到文件中。由于殿下,管理,是一个懒惰和容易恼怒的统治者,>>只想抄写新的信息到文件。

代码语言:javascript
复制
*/1 * * * * netstat -n | grep tcp | awk '{ print $5 }' | cut -d "." -f-4 >> /tmp/file

>>自言自语

代码语言:javascript
复制
To append, or not append, that is the question: 
Whether 'tis new information to bother The Admin with 
and earn an outrageous Fortune,
Or to take Arms against `netstat` and the others, 
And by opposing, ignore them? To die: to sleep;

注意:对于所有像我一样理解哈姆雷特有问题的人,问题是,如何检查字符串是否已经包含在文件中,如果没有,如何将其附加到文件中?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-21 10:55:14

除非您正在处理一个非常大的文件,否则可以使用uniq命令从文件中删除重复行。这意味着您也将对文件进行排序,我不知道这对您是有利的还是不利的:

代码语言:javascript
复制
netstat -n | grep tcp | awk '{ print $5 }' | cut -d "." -f-4 >> /tmp/file && sort /tmp/file | uniq > /tmp/file.uniq

这将给出在/tmp/file.uniq中没有重复的排序结果。

票数 1
EN

Stack Overflow用户

发布于 2013-09-21 19:49:27

代码语言:javascript
复制
What a piece of work is piping, how easy to reason about, 
how infinite in use cases, in bash and script, 
how elegant and admirable in action,
how like a vim in flexibility, 
how like a gnu!

以下是一个略有不同的观点:

代码语言:javascript
复制
netstat -n | awk -F"[\t .]+" '/tcp/ {print $9"."$10"."$11"."$12}' | sort -nu | while read ip; do if ! grep -q $ip /tmp/file; then echo $ip >> /tmp/file; fi; done;

解释:

代码语言:javascript
复制
awk -F"[\t .]+" '/tcp/ {print $9"."$10"."$11"."$12}'

Awk将输入字符串拆分为制表符和".“。输入字符串由包含"tcp“的行过滤(而不是使用单独的grep调用)。最后,生成的输出字段与点连接并打印出来。

代码语言:javascript
复制
sort -nu

对IP进行数字排序,并创建一组唯一的条目。这样就不需要单独的uniq命令了。

代码语言:javascript
复制
if ! grep -q $ip /tmp/file; then echo $ip >> /tmp/file; fi;

文件中的ip的Greps,如果它找不到它,则会追加ip。

注意:这个解决方案不会在每次运行后删除旧条目并清理文件--它只是附加--正如您的问题所暗示的那样。

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

https://stackoverflow.com/questions/18931423

复制
相关文章

相似问题

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