Unix 如果等于AWK,则更改特定列
我有一个搜索短语列表。我试图将第三列替换为N/A,如果它等于“error”。我在第二列中使用了以下代码成功地完成了这项工作。所以,我不知道为什么它在第三栏不起作用。有什么想法吗Unix 如果等于AWK,则更改特定列,unix,awk,sed,Unix,Awk,Sed,我有一个搜索短语列表。我试图将第三列替换为N/A,如果它等于“error”。我在第二列中使用了以下代码成功地完成了这项工作。所以,我不知道为什么它在第三栏不起作用。有什么想法吗 data protector new ipad,0,error 60 led lcd television,0,error boost mobile new phone 2013,0,error seagate st320014a,0,error awk -F, '{$3=($3=="error"?"N/A":$3)}
data
protector new ipad,0,error
60 led lcd television,0,error
boost mobile new phone 2013,0,error
seagate st320014a,0,error
awk -F, '{$3=($3=="error"?"N/A":$3)}1' OFS=, nTotal.csv > n3Total.csv
试试这个
awk
awk -F, '$3=="error" {$3="N/A"}1' OFS=, file
data
protector new ipad,0,N/A
60 led lcd television,0,N/A
boost mobile new phone 2013,0,N/A
seagate st320014a,0,N/A
您的解决方案提供:
data,,
protector new ipad,0,N/A
60 led lcd television,0,N/A
boost mobile new phone 2013,0,N/A
seagate st320014a,0,N/A
您可以在数据之后看到额外的
,
,因为它以您测试的方式创建了两个额外的字段。您的awk
命令是正确的,不是有效的,而是正确的。然而,可能还有其他原因说明它可能不起作用
后可能有一个尾随空格。因为您测试的是第三列的精确匹配,所以它可能会失败错误
- 您的文件是dos格式的。如果您在windows计算机上创建了这些文件,并且正在unix/linux计算机上使用这些文件,那么您需要转换这些行尾。执行
将在末尾显示cat-vet
字符。您可以使用^M
或类似的实用程序将其转换为unix格式dos2unix