gpt4 book ai didi

linux - bash 中的连字符和垂直线

转载 作者:太空狗 更新时间:2023-10-29 12:22:29 25 4
gpt4 key购买 nike

我正在尝试破译以下代码:

awk '{print "aws s3 cp ###"$4" - | gunzip | awk -F $\"\\t\" '"'"'BEGIN {OFS = FS} {if ($287 == \"0\" && tolower($295)) print $11}'"'"' > "gensub(/.+\/(.+tsv\.gz)/,output_path"\\1.txt",$4)}'

但是,我不确定一些事情:

1) "-"的作用。我知道“|”用于管道,但我真的不确定“-”,除非在否定某些选项的情况下。我尝试用谷歌搜索“ubuntu hyphen/minus/dash”,但没有找到与此相关的内容

2) 我也不确定 print "aws s3 cp ###"$4"。它通常会打印满足 if 条件的行,但这里它需要一个 aws 命令字符串,后面是我知道 $4 是一个列索引

3) 另外,我知道 awk -F 后跟一个符号会将符号指定为分隔符,但这里没有符号。我不明白这种情况下的默认行为。

最佳答案

那真是一个糟糕的命令行。

1) 连字符是 aws s3 cp 命令的一个选项。以这种方式使用它并不常见,但这意味着副本的目标是 STDOUT,因此通过管道传输到 gunzip。更常见的是连字符代表 STDIN,用于将数据通过管道输入命令。

2) print 正在输出 aws s3 cp 命令以及管道的所有其余部分(包括另一个 AWK 命令的嵌入式实例)。

3) 此处 -F 的“符号”是制表符(不正确地)使用 Bash 的翻译引号 ($"")。它应该使用 Bash 的 ANSI 引号 ($' '),它允许解释反斜杠转义(\t 表示制表符)。无论如何,这都是浪费,因为 AWK 无需任何特殊引用即可理解 \t for -F

这似乎是一个必须在别处设置的变量:output_path

外部 AWK 命令输出的管道需要提供给 shell 才能执行。

关于linux - bash 中的连字符和垂直线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56316203/

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