首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据linux中第三列的条件,交换两列

问根据linux中第三列的条件,交换两列
EN

Stack Overflow用户
提问于 2017-11-22 12:35:32
回答 2查看 247关注 0票数 0

我有一个文件,有3列像这样

代码语言:javascript
复制
  Col1         Col2          Col3 
   A            B             <-
   C            D             ->
   E            F             ->

我想在任何时候交换Col1和Col2的条目

代码语言:javascript
复制
<-

在第三栏。我希望输出文件类似于

代码语言:javascript
复制
 Col1         Col2          Col3 
   B            A             ->
   C            D             ->
   E            F             ->
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-22 13:04:19

代码语言:javascript
复制
awk '($3=="<-"){$3=$2;$2=$1;$1=$3;$3="->"}1' <file>

本质上,如果是$3=="<-",那么交换列并重新定义$3。那就印出来。

票数 0
EN

Stack Overflow用户

发布于 2017-11-22 12:57:15

一个简短的awk示例是

代码语言:javascript
复制
 cat foooo | awk '{if (match($3,"<-")){print $2,$1,$3}else{print $1,$2,$3}}' 

其中foooo是文件名。

如果您还想更改"<-“,则代码将是

代码语言:javascript
复制
 cat foooo | awk '{if (match($3,"<-")){print $2,$1,"->"}else{print $1,$2,$3}}' 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47434888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档