gpt4 book ai didi

linux - bash,在带有管道的命令中插入条件

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:36:57 26 4
gpt4 key购买 nike

我需要创建一个包含另一个非常大文件的某些字段的文件,但前提是字段 3 为空。

实际上我是这样做的:

cut -f 1,3,4,6 allCountries.txt | sort -u > cities_nostate.txt

然后,使用另一个脚本,我检查了 cities_nostate.txt 文件的所有行并检查了所有字段,但这需要几个小时。

是否可以在命令中加入一个条件,以便快速过滤和删除所有无用的行(那些字段 3 不为空的行)?


接受答案后,我是这样解决的:

awk -F'\t' '$3 == "" && $1 != "" && $4 != "" && $6 != "" {print $1, "\t", $4, "\t", $6}' allCountries.txt | sort -u > 

字段 3 必须为空,但其他所有字段都不能。我需要在打印字段之间使用制表符分隔符,因为每个字段内可能有空格。

最佳答案

如果您的字段由制表符分隔并且您只想打印字段 3 为空的行,您可以使用:

awk -F'\t' '$3 == ""{print $1,$3,$4,$6}' allCountries.txt

在 awk 中,默认的输入字段分隔符是任意数量的空格字符 ([[:space:]]+),因此如果不将其更改为其他内容,您将无法检测到空字段。

要打印由制表符分隔的输出列,您可以设置输出字段分隔符变量 OFS。这可以在处理文件之前的 BEGIN block 中完成:

awk 'BEGIN{FS=OFS="\t"}$3 == ""{print $1,$3,$4,$6}' allCountries.txt

我同时将输入字段分隔符分配给制表符。

关于linux - bash,在带有管道的命令中插入条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27605319/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com