【问题标题】:Use awk to split first line of a file based on delimiter and print others as it is使用 awk 根据分隔符拆分文件的第一行并按原样打印其他行
【发布时间】:2018-10-20 19:04:27
【问题描述】:

我有一个如下所示的输入文件:

name<next>Rocky
id: 1321
age: 36
exp: 10
occupation: doctor

要求是以某种方式使用awk,使得awk处理后的输出为:

Rocky
id: 1321
age: 36
exp: 10
occupation: doctor

可以看出,除了第一行之外,文件的其他行中不存在分隔符“”。

目前在下面运行时仅打印 Rocky 后跟空白行,因为其他行中没有这样的分隔符:

awk -F "<next>" '{print $2}' file

我知道 awk 逐行处理,但有没有办法限制 awk 仅在 1 行上处理或执行定界操作。在这种情况下,我们在第一行进行。概括地说,也可以使 awk 处理符合标准的处理行,例如使用分隔符分割行并按原样打印其他行。

【问题讨论】:

    标签: awk


    【解决方案1】:

    关注awk 可能对您有所帮助。

    awk 'FNR==1{sub(/.*next>/,"")} 1'   Input_file
    

    解释:

    FNR==1:如果行号为1,则在此处检查条件。如果是,请执行以下操作。

    {sub(/.*next&gt;/,"")}:使用awksub 实用程序并在此处用NULL 替换从开始到直到next&gt; 的所有内容。

    1: awk 适用于 condition 然后 action 的方法,所以在这里提到 1 我将条件设为 TRUE 并且未提及任何操作,因此默认情况下会打印当前行。

    【讨论】:

      【解决方案2】:

      您可以打印最后一个字段,这将与您的分隔符一起使用,即

      $ awk -F'<next>' '{print $NF}' file
      
      Rocky
      id: 1321
      age: 36
      exp: 10
      occupation: doctor
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-19
        • 2019-11-12
        • 1970-01-01
        相关资源
        最近更新 更多