首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用if-else语句修改文本文件

用if-else语句修改文本文件
EN

Unix & Linux用户
提问于 2020-03-26 00:20:58
回答 3查看 133关注 0票数 -8

我有这样一个输入文件:

代码语言:javascript
复制
3 1 10 1 6  
9 4 2  4 1  
9 2 2  2 1  
2 4 2  2 2  
9 4 9  2 9 1 2    

需要遵循的条件:

  1. 如果NF==5与$2和$4相同,则在$3位置和位置$4中插入11,插入存储在$2或$4中的值(此处1)。其余字段向右移动两个位置。
  2. 如果NF==5与$1和$3相同,则在位置$3中插入存储在$1或$3 (此处2)中的值,在位置$4中插入5。其余字段向右移动两个位置。
  3. 其余的线路保持不变。

输出应该如下所示:

代码语言:javascript
复制
3 1 11 1 10 1 6    
9 4 11 4 2  4 1  
9 2 11 2 2  2 1  
2 4 2  5 2  2 2  
9 4 9  2 9 1 2  

提前感谢!

EN

回答 3

Unix & Linux用户

回答已采纳

发布于 2020-03-31 06:36:17

代码语言:javascript
复制
awk '{if((NF==5) && ($2 == $4)){$7=$5;$5=$3;$6=$4;$3=11;$4=$2;print $0}else if ((NF==5) && ($1 == $3)){$7=$5;$5=$3;$6=$4;$4=5;$3=$1;print }else{print $0}}' filename

输出

代码语言:javascript
复制
3 1 11 1 10 1 6
9 4 11 4 2 4 1
9 2 11 2 2 2 1
2 4 2 5 2 2 2
9 4 9  2 9 1 2 
票数 1
EN

Unix & Linux用户

发布于 2020-03-26 03:09:52

代码语言:javascript
复制
$ awk 'NF==5{ if ($2==$4) $2 = $2 OFS 11 OFS $4; else if ($1==$3) $2 = $2 OFS $1 OFS 5 } 1' file
3 1 11 1 10 1 6
9 4 11 4 2 4 1
9 2 11 2 2 2 1
2 4 2 5 2 2 2
9 4 9  2 9 1 2
票数 2
EN

Unix & Linux用户

发布于 2020-03-26 00:50:10

下面是一行awk命令,它提供了所需的输出:

{ if(NF == 5& $2 == $4) {a=11;b=$2;打印$1“$2”a“b "$3”$4“$5;} if(NF == 5& $1 == $3) {c=$1;d=5;打印$1”$2 "c "d“d”$3“$4”$5;}打印$0}‘sample_simple.txt’

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/574991

复制
相关文章

相似问题

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