在Unix系统上查找数据的最佳工具和技巧

发表于:2016-3-01 10:02

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:至秦    来源:51Testing软件测试网采编

分享:
  当你不知道的时候
  如果你要查找一个已知位置的文本,例如当 Perl 告诉你脚本执行到第 73 行出现了问题,或者你正在处理文件的第 1892 行,你可以使用sed 来显示特定的行(我只是不喜欢数到 1892 行)。而且额外花一点点力气,你就可以只显示这一行。
  错误信息可能像这个样子:
  “syntax error line 73 near ”} else“ ”
  你可以使用一个sed命令来显示出问题的这行:
  $ sed -n 73p showvars
  else
  好了,就是这行,但是我们也没有比之前多知道些什么。通过显示前面几行可以增加一点上下文信息,我们就可以定位错误。这里有一个类似的命令可以显示这行和之前的十行:
  sed -n 63,73p showvars
  if $password eq "a_secret";
  {
  foreach $var (sort(keys(%ENV))) {
  $val = $ENV{$var};
  $val =~ s|n|n|g;
  $val =~ s|"|"|g;
  print '${var}="${val}"n'
  };
  }
  else
  哎呦!这看上去是某些人在写 if 语句时出了问题!我们可以很容易地修复它。
  你还可以使用 sed 命令来强调包含特定内容的行。在下面的命令里,我们增加了一个 “箭头标记” 来强调每一个包含 foreach 命令的行:
  $ sed '/print/{b label1; {:label1 ; s/^/# / ; s/$/ <===/ ;} }' showvars
  #!/bin/bash
  if $password eq "a_secret";
  {
  foreach $var (sort(keys(%ENV))) {
  $val = $ENV{$var};
  $val =~ s|n|n|g;
  $val =~ s|"|"|g;
  #         print '${var}="${val}"n' <===
  };
  }
  else
  你可以使用类似的命令注释掉你的 print 命令:
  $ sed '/print/{b label1; {:label1 ; s/^/# / ; s/$/ <===/ ;} }' showvars
  #!/bin/bash
  if $password eq "a_secret";
  {
  foreach $var (sort(keys(%ENV))) {
  $val = $ENV{$var};
  $val =~ s|n|n|g;
  $val =~ s|"|"|g;
  #         print '${var}="${val}"n' <===
  };
  }
  else
  大海捞针很难,其实地毯上找针也都不容易。但是通过使用一些最常见 Unix 命令的变形,就可以很容易找到你要找的东西,甚至当你并不知道要找什么的时候。
22/2<12
精选软件测试好文,快来阅读吧~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号