Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.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
Bash 删除特定日期后的所有行_Bash_Csv_Ksh_Csh - Fatal编程技术网

Bash 删除特定日期后的所有行

Bash 删除特定日期后的所有行,bash,csv,ksh,csh,Bash,Csv,Ksh,Csh,我有很多*.csv文件。我想删除特定行后的内容。我将删除20031231之后的所有行 如何使用shell脚本的某些行来解决此问题 Test,20031231,000107,0.74843,0.74813 Test,20031231,000107,0.74838,0.74808 Test,20031231,000108,0.74841,0.74815 Test,20031231,000108,0.74835,0.74809 Test,20031231,000110,0.74842,0.74818

我有很多*.csv文件。我想删除特定行后的内容。我将删除20031231之后的所有行 如何使用shell脚本的某些行来解决此问题

Test,20031231,000107,0.74843,0.74813
Test,20031231,000107,0.74838,0.74808
Test,20031231,000108,0.74841,0.74815
Test,20031231,000108,0.74835,0.74809
Test,20031231,000110,0.74842,0.74818

Test,20040101,000100,0.73342,0.744318

快速和肮脏,但没有任何其他关于约束的信息

sed '1,/20031231/p;d' YourFile

快速和肮脏,但没有任何其他关于约束的信息

sed '1,/20031231/p;d' YourFile

如果要使用shell脚本,最好使用
awk
。这将实现以下目的:

awk 'BEGIN {FS=","} {if ($2 == "20031231") print $0}' input.csv > output.csv

此代码只会将包含20031231的行写入不同的文件。

如果要使用shell脚本,最好使用
awk
。这将实现以下目的:

awk 'BEGIN {FS=","} {if ($2 == "20031231") print $0}' input.csv > output.csv

此代码将只将包含20031231的行写入其他文件。

忽略空行和不匹配的数据

awk文件:

$ cat awk.awk 
{
    if($2<="20031231" && $0!=""){
        print $0
    }else{
        next
    }
}
一艘班轮:

$ awk -F',' '{if($2<="20031231" && $0!=""){print $0}else{next}}' input
Test,20031231,000107,0.74843,0.74813
Test,20031231,000107,0.74838,0.74808
Test,20031231,000108,0.74841,0.74815
Test,20031231,000108,0.74835,0.74809
Test,20031231,000110,0.74842,0.74818

$awk-F',“{if($2忽略空行和不匹配的数据

awk文件:

$ cat awk.awk 
{
    if($2<="20031231" && $0!=""){
        print $0
    }else{
        next
    }
}
一艘班轮:

$ awk -F',' '{if($2<="20031231" && $0!=""){print $0}else{next}}' input
Test,20031231,000107,0.74843,0.74813
Test,20031231,000107,0.74838,0.74808
Test,20031231,000108,0.74841,0.74815
Test,20031231,000108,0.74835,0.74809
Test,20031231,000110,0.74842,0.74818
$awk-F',“{if$2与Miller()

给你

Test,20040101,000100,0.73342,0.744318
与米勒()

给你

Test,20040101,000100,0.73342,0.744318

使用
awk
请尝试:

awk -F, '$2<=20031231' input.csv

awk-F,'$2带
awk
请尝试:

awk -F, '$2<=20031231' input.csv

awk-F,“$2您使用awk是正确的,但是,根据OP“删除20031231之后的所有行”意味着如果任何日期与您仅匹配一个确切日期,则等于或小于阈值。您是对的,忘记了以前的日期…感谢提醒!您使用awk是正确的,但是,根据OP“删除20031231之后的所有行”如果任何日期与您只匹配一个确切日期,则表示等于或早于阈值。您是对的,忘记了以前的日期…谢谢提醒!