【问题标题】:More commands to one output file?一个输出文件的更多命令?
【发布时间】:2012-11-23 10:06:06
【问题描述】:

我做了一些命令来解析来自 free -m 的值,现在需要在一个文件中输出所有内容。它看起来像这样:

free -m | grep 'Mem' | awk '{print $3'} && free -m | grep 'Mem' | awk '{print $6'} && free -m | grep 'Mem' | awk '{print $7'} && free -m | grep 'cache:' | awk '{print $3'}

如果我在末尾添加 > /some/file,它只写入最后一个值,如何将所有这些命令的输出写入一个文件? 感谢您的帮助

【问题讨论】:

  • 您可以对 awk 使用多个表达式:例如$免费-m | grep '内存' | awk '{print $3}{print $6}' 甚至 $ free -m | grep '内存' | awk '{打印 $3"\n"$6}'

标签: linux shell command-line-interface


【解决方案1】:

加括号打开子shell:

( free -m | grep 'Mem' | awk '{print $3'} && free -m | grep 'Mem' | awk '{print $6'} && free -m | grep 'Mem' | awk '{print $7'} && free -m | grep 'cache:' | awk '{print $3'} ) > result.txt

【讨论】:

  • 不需要子shell。 { free -m ... | awk '{print $3'}; } > result.txt 工作得很好。 (当然,没有显着差异:只是指出一个替代方案。)
  • 谢谢 - 还不知道 :) 一个细微的区别是,subshel​​l 方法也适用于 tcsh,而我的方法是 {: Command not found.。我个人更喜欢 bash,但从 OP 使用哪个 shell 的问题中并不清楚...
猜你喜欢
  • 2016-07-13
  • 1970-01-01
  • 1970-01-01
  • 2019-05-12
  • 1970-01-01
  • 2018-03-29
  • 2011-02-12
  • 2016-03-18
  • 1970-01-01
相关资源
最近更新 更多