Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux AWK根据其他列的if-else写入新列_Linux_Bash_Shell_Awk_Sed - Fatal编程技术网

Linux AWK根据其他列的if-else写入新列

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

我有一个包含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

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