linux - 根据模式条件添加2行的元素
问题描述
我想根据模式添加 2 行
我有这张桌子
1 - 513 1478 966 1
2 - 1594 2130 537 1
3 + 2171 2539 369 1
4 - 2587 3159 573 1
我正在寻找的是添加一个 $7 列,其中第一个元素以 0 开头,如果 $2 是“-”,则从 $7 中减去 -1,否则在 $7 中添加 +1,如下所示:
1 - 513 1478 966 1 -1
2 - 1594 2130 537 1 -2
3 + 2171 2539 369 1 -1
4 - 2587 3159 573 1 -2 `
我写了这个
awk '$7==0,i=1;{for i in $1 do {if($2="-"){$7=$7+1}else{$7=$7-1} done print}'
我的代码的问题是,如果我删除for
条件将整个 $2 变成 - 并且整个 $7 是 -1
解决方案
使用@RavinderSingh13 的技巧
$ awk '{print $0 "\t" (c+=$2"1")}' file
1 - 513 1478 966 1 -1
2 - 1594 2130 537 1 -2
3 + 2171 2539 369 1 -1
4 - 2587 3159 573 1 -2
推荐阅读
- javascript - 如何在 JavaScript 中获取 span 标签父类名?
- java - 如何忽略 XSD 命名空间中的破折号以使用 JAXB 生成类
- gatsby - 配置 gatsby-transformer-remark 以添加默认类
- sql - 如何使用 SQL 中的保留字作为表名?
- split - 如何使数字看起来像用空格分隔的 3 位数字组
- java - 我的android项目的代码被单独破坏了,但是源文件完好无损,我不明白这是怎么回事
- vue.js - VueJs Oauth Axios 身份验证重定向响应 URL
- apache-spark - PySpark - 如何根据列中的两个值从数据框中过滤出连续的行块
- azure - ApplicationInsights 持续导出
- flutter - Navigator.pushNamed 更改路由到另一个屏幕后颤振构建旧屏幕?