Linux AWK根据其他列的if-else写入新列
我有一个包含a、B、C、D列的CSV文件。D列包含0到1的值。我想使用AWK在D列的值中写入新的E列基。Linux AWK根据其他列的if-else写入新列,linux,bash,shell,awk,sed,Linux,Bash,Shell,Awk,Sed,我有一个包含a、B、C、D列的CSV文件。D列包含0到1的值。我想使用AWK在D列的值中写入新的E列基。 例如: 如果D列中的值=0.7,则E列中的值=1 我能够打印E列的输出,但不确定如何将其写入新列。可以将代码的输出写入新文件,然后将其粘贴回旧文件,但我想知道是否有更有效的方法。这是我的密码: awk -F"," 'NR>1 {if ($3>=0.7) $4= "1"; else if ($3<0.7) $4= "0"; print $4;}' test_file.csv
例如:
如果D列中的值=0.7,则E列中的值=1 我能够打印E列的输出,但不确定如何将其写入新列。可以将代码的输出写入新文件,然后将其粘贴回旧文件,但我想知道是否有更有效的方法。这是我的密码:
awk -F"," 'NR>1 {if ($3>=0.7) $4= "1"; else if ($3<0.7) $4= "0"; print $4;}' test_file.csv
awk-F“,“'NR>1{if($3>=0.7)$4=“1”;else if($3低于awk)命令应给出预期的输出
cat yourfile.csv|awk -F "," '{if($4>=0.7)print $0",1";else if($4<0.7)print $0",0"}' > test_file.csv
cat yourfile.csv | awk-F“,“{if($4>=0.7)print$0”,1”;如果($4您可以使用:
awk -F, 'NR>1 {$0 = $0 FS (($4 >= 0.7) ? 1 : 0)} 1' test_file.csv
只有在我使用$3而不是$4时才起作用。$0是指最后一列吗?$0是指整行,第一列是$1,在这种情况下,您有4列A、B、C、D,即D应该是$4请立即尝试我的更新答案…我不确定您是否需要$3
或$4
,因为您编写了列D
,这是$4
,但我必须这样做接受另一个答案,因为它向我展示了如何输出到一个新文件。感谢你的简短而甜蜜的回答。如果没有什么可以避免不必要的cat
。那么使用:awk-F,'NR>1{$0=$0fs(($4>=0.7)?1:0)}1'test_file.csv>out.csv
我相信您希望将NR>1
作为一个条件,您能解释一下这部分吗:$0=$0 FS