Bash 删除特定日期后的所有行
我有很多*.csv文件。我想删除特定行后的内容。我将删除20031231之后的所有行 如何使用shell脚本的某些行来解决此问题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
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之后的所有行”如果任何日期与您只匹配一个确切日期,则表示等于或早于阈值。您是对的,忘记了以前的日期…谢谢提醒!