使用awk更改文件中第一列的值

使用awk更改文件中第一列的值,awk,sed,Awk,Sed,我有一个.csv文件,它有多个列,我想将文件中第一列的值更改为所有行的正值,除非它是负值 如果我有文件 product,0 0,no way brand,0 0 0,detergent product,0 0 1,sugar negative,0 0 1, sight 我想去 positive,0 0,no way positive,0 0,detergent positive,0 0 1,sugar negative,0 0 1, sight 我如何使用awk实现这一点?这个awk单行程序

我有一个.csv文件,它有多个列,我想将文件中第一列的值更改为所有行的正值,除非它是负值

如果我有文件

product,0 0,no way
brand,0 0 0,detergent
product,0 0 1,sugar
negative,0 0 1, sight
我想去

positive,0 0,no way
positive,0 0,detergent
positive,0 0 1,sugar
negative,0 0 1, sight

我如何使用awk实现这一点?

这个awk单行程序应该可以帮助您:

awk -F, -v OFS="," '$1="positive"' file
由于您使用sed标记:

OP新要求的更新: 或:


这可能适用于GNU sed:

sed '/^negative,/!s/^[^,]*/positive/' file

如果第一个单词不是负数,就把它改成正数。

Kent,我只是根据我的数据稍微编辑了一下这个问题。谢谢
awk -F, -v OFS="," '$1="negative"==$1?$1:"positive"' file
awk -F, -v OFS="," '"negative"==$1||$1="positive"' file
sed '/^negative,/!s/^[^,]*/positive/' file