Linux 如何查找文件中具有特殊字符的列

Linux 如何查找文件中具有特殊字符的列,linux,shell,unix,awk,Linux,Shell,Unix,Awk,我想找出文件中哪列有特殊字符 例如,我有以下数据: 11|abc|ac♠|12 12|aac|be•|2♣ 13|cj♦|jkd|32 期望输出: 1|3 2|3|4 3|2 我想要记录编号以及具有特殊字符的列编号 您没有定义特殊角色。我假设您指的是超出正常ASCII范围的任何内容。尝试: $ awk -F'|' '{r=""; for (i=1;i<=NF;i++)if($i ~ /[^\t -~]/) r=r OFS i; if (r) print NR r} ' OFS='|'

我想找出文件中哪列有特殊字符

例如,我有以下数据:

11|abc|ac♠|12
12|aac|be•|2♣
13|cj♦|jkd|32
期望输出:

1|3
2|3|4
3|2
我想要记录编号以及具有特殊字符的列编号

您没有定义特殊角色。我假设您指的是超出正常ASCII范围的任何内容。尝试:

$ awk -F'|' '{r=""; for (i=1;i<=NF;i++)if($i ~ /[^\t -~]/) r=r OFS i; if (r) print NR r} ' OFS='|' File
1|3
2|3|4
3|2

你认为什么是“特殊人物”?到目前为止你尝试了什么?此外,输出似乎与输入不匹配。您使用的是什么字符编码?
awk -F'|' '
    {
        r=""
        for (i=1;i<=NF;i++)
            if ($i ~ /[^\t -~]/)
                r=r OFS i
        if (r)
            print NR r
    } ' OFS='|' File