【问题标题】:awk condition for first line replacement第一行替换的 awk 条件
【发布时间】:2022-01-07 14:05:40
【问题描述】:

我有一个 shell 替换了这个文件的第一行:

TABLE;APGFBEBA; ;
NoSS;CHAR(13);N° assuré;
DtDebExo;CHAR(8);Date début;

通过这个:

01 APGFBEBA.

但我也有最初看起来像这样的文件:

Table;APGFNOJF; ; ;

所以我尝试在我的 awk 命令中添加一个“OR”条件,这样我就可以像上面那样替换这些行,但不幸的是它不起作用

这是我的 awk 命令:

awk -F ';' '
$1=="TABLE" && $3==" " || $1=="TABLE" && $4==" " {
  printf "01 %s.\n\n", $2;
  next
}

第一个条件有效,但第二个条件无效

【问题讨论】:

  • awk -F ';' 'toupper($1)=="TABLE" {printf "01 %s.\n\n", $2}' file 应该适用于这两行。
  • 主题包含短语 first line replacement ...这是否意味着您只想更改文件的 first 行?如果是这样,我建议使用显示文件前几行的示例输入来更新问题,然后显示相同 few lines 的预期输出

标签: bash shell unix awk


【解决方案1】:

将我的评论转换为答案,以便将来的访问者轻松找到解决方案。

你不需要|| 条件来匹配这两行

awk -F ';' '
toupper($1)=="TABLE"  && $3 == " " {
   printf "01 %s.\n\n", $2
}' file

应该适用于两条线。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-20
    • 2013-11-17
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    • 2016-10-29
    相关资源
    最近更新 更多