【问题标题】:Linux command to retrieve desired lines检索所需行的 Linux 命令
【发布时间】:2017-04-10 15:50:57
【问题描述】:

我有以下形式的数据(存储在file1.txt中):

<http://stackoverflow> <isA> "website".
<website> <nameIs> <http://stackoverflow>.

现在使用 grep 我想检索“http://stackoverflow”作为第一个字符串出现的行,即如果我在空格上分割行,那么http://stackoverflow 应该是第一个字符串。

基于此,我的输出应该是:

<http://stackoverflow> <isA> "website".

是否可以使用 grep 或任何其他 linux 命令来执行此操作。因为如果我使用:grephttp://stackoverflowfile1.txt,那么我会得到输出:

<http://stackoverflow> <isA> "website".
<website> <nameIs> <http://stackoverflow>.

即我得到了这两行(而我想要的输出应该只包含 file1.txt 的第一行):

【问题讨论】:

  • 使用“^”搜索行首。试试看:grep "^&lt;http://stackoverflow" file1.txt

标签: linux bash ubuntu ubuntu-12.04


【解决方案1】:

给定一个名为 t0 的文件中的几行这样的代码:

<http://stackoverflow> <isA> "website".
yes <http://stackoverflow> <isA> "website".
<website> <nameIs> <http://stackoverflow>.

这个命令可以解决问题。注意站点后的空间:

grep "^<http://stackoverflow> " t0
Result:
<http://stackoverflow> <isA> "website".

如果你选择使用awk,你可以这样写:

awk '{ if($1 == "<http://stackoverflow>") {print $0} }' t0

awk 按空格分割,然后检查分割中的第一项是否为&lt;http://stackoverflow&gt;。如果是这样,打印由$0代表的整行

【讨论】:

    【解决方案2】:

    你可以使用正则表达式:

    grep ^http://stackoverflow file1.txt
    

    ^ 匹配行首

    【讨论】:

      【解决方案3】:
      grep ^\<http://stackoverflow file1.txt
      

      ^ 匹配行首
      \ 匹配转义字符&lt;

      【讨论】:

        【解决方案4】:

        简单的使用头部或尾部命令

        head -1 file1.txt
        

        tail -1 file1.txt 
        

        此解决方案根据您的帖子提供。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-11-04
          • 2012-02-03
          • 2018-11-25
          • 1970-01-01
          • 1970-01-01
          • 2015-01-01
          • 2012-01-23
          • 1970-01-01
          相关资源
          最近更新 更多