【问题标题】:Change order of txt file lines divided by ":" using awk or cut使用awk或cut更改txt文件行除以“:”的顺序
【发布时间】:2015-02-01 19:13:57
【问题描述】:

我有一个名为:example.txt 的文本文件,其中包含以下几行:

email1:location1
email2:location2
email3:location3

我想把它改成这样:

location1:email1 
location2:email2 
location3:email3 

最简单的方法是什么?我尝试了几个 awk 命令,但无法让它们工作。从我目前读到的内容来看,cut 是不可能的。
我在 Windows 上使用 Ubuntu 或 GNUwin32。

【问题讨论】:

    标签: awk terminal grep cut gnuwin32


    【解决方案1】:

    简单

    awk -F : 'BEGIN { OFS = FS } { print $2, $1 }' filename
    

    这里唯一的技巧是输出字段分隔符OFS 需要设置为字段分隔符FS(即-F : 设置为:),因此字段在输出中的分隔方式与在输入。 $2 指行中的第二个字段,$1 指第一个字段。

    也可以:

    awk -F : '{ print $2 ":" $1 }' filename
    

    ...代价是必须在两个地方更改调用以使用不同的分隔符。

    【讨论】:

      【解决方案2】:

      这是一个awk

      awk -F: '$0=$2":"$1' file
      location1:email1
      location2:email2
      location3:email3
      

      -F: 将字段分隔符设置为 :
      $0=$2":"$1 在字段 1 之前使用字段 2 重构行
      由于这总是正确的,它也会执行默认操作,打印该行。

      【讨论】:

        猜你喜欢
        • 2014-12-10
        • 2020-05-15
        • 2022-11-04
        • 2011-04-26
        • 2020-05-24
        • 2013-05-27
        • 1970-01-01
        • 2019-10-20
        • 2019-09-26
        相关资源
        最近更新 更多