我有一个带有分隔符的文件|
,我需要打印第一个字段$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 命令中的前导空格来更改。