请支持使用 awk 和 regex

请支持使用 awk 和 regex

我有一个带有分隔符的文件|,我需要打印第一个字段$1和其他字段,我需要打印与正则表达式匹配的部分 \[(.*?)\>

cat x.txt |nawk -F"|" '{print $1"|"match regex $2,"|" match regex $3}'

怎么做?

答案1

首先,一开始不需要cat命令。您可以在命令行末尾使用“< x.txt”将文件的输出重定向到 awk。更好的是,awk 可以将要处理的文件的名称作为参数。所以我想你想要这样的东西:

awk -F"|" '{
  printf "%s", $1;
  for (i=2; i<=NF; i++) {
    if (match($i, /\[(.*?)>/)) {
      printf " %s", substr($i,RSTART,RLENGTH);
  }};
  printf "\n"
}' x.txt

对于文件中的每一行,这将打印第一个字段,然后是在其余每个字段(如果有)中找到的所有正则表达式匹配项。输出字段之间用空格分隔;这可以通过编辑第二个 printf 命令中的前导空格来更改。

相关内容