小编Ini*_*ian的帖子

在jq中逃脱报价

我有以下两个bash行

TMPFILE="$(mktemp)" || exit 1

< package.json jq '. + {"foo":'"${BOO}"'}' > "$TMPFILE"
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

jq: error: syntax error, unexpected '}' (Unix shell quoting issues?) at <top-level>, line 1:
. + {"foo":}
jq: 1 compile error
Run Code Online (Sandbox Code Playgroud)

任何想法如何通过在那里使用双引号来使shellcheck错误静音来正确地逃避该部分

bash shell jq

6
推荐指数
1
解决办法
8782
查看次数

使用bash变量将多个标头传递给curl命令

我想curl用多个标题发出请求.解决方案是创建此命令:

curl -H "keyheader: value" -H "2ndkeyheader: 2ndvalue" ...
Run Code Online (Sandbox Code Playgroud)

我的目标是只使用一个变量和所有标题,如:

headers='-H "keyheader: value" -H "2ndkeyheader: 2ndvalue" '
curl $headers
Run Code Online (Sandbox Code Playgroud)

发送

curl -H "keyheader: value" -H "2ndkeyheader: 2ndvalue"
Run Code Online (Sandbox Code Playgroud)

目前,问题是:我可以使用'"声明我的字符串,但bash尝试运行之后"-H"作为参数然后回答:

command unknown
Run Code Online (Sandbox Code Playgroud)

想知道这里出了什么问题.

bash curl

6
推荐指数
1
解决办法
9586
查看次数

在图案处连接线。不均匀间隔

如果我有这个...

6,
9,
12
"url": "https://www.url.com"
6,
9,
12
"url": "https://www.url.com"
13,
16
"url": "https://www.url.com"
"url": "https://www.url.com"
18
"url": "https://www.url.com"
"url": "https://www.url.com"
3,
6,
14
"url": "https://www.url.com"
"url": "https://www.url.com"
20
"url": "https://www.url.com"
74
"url": "https://www.url.com"
Run Code Online (Sandbox Code Playgroud)

我怎样才能以一种给我这个的方式加入这些线条......

6,9,12"url": "https://www.url.com"
6,9,12"url": "https://www.url.com"
13,16"url": "https://www.url.com"
"url": "https://www.url.com"
18"url": "https://www.url.com"
"url": "https://www.url.com"
3,6,14"url": "https://www.url.com"
"url": "https://www.url.com"
20"url": "https://www.url.com"
74"url": "https://www.url.com"
Run Code Online (Sandbox Code Playgroud)

我曾尝试使用 sed 删除以数字开头的行上的换行符,但它不起作用。我想是因为线路在工作时发生了变化?

sed '/^[0-9]/N;s/\n//'
Run Code Online (Sandbox Code Playgroud)

我明白了这个...

6,9,
12"url": "https://www.url.com"
6,9,
12"url": "https://www.url.com"
13,16
"url": "https://www.url.com"
"url": "https://www.url.com"
18"url": "https://www.url.com"
"url": "https://www.url.com"
3,6,
14"url": "https://www.url.com" …
Run Code Online (Sandbox Code Playgroud)

awk sed

6
推荐指数
2
解决办法
80
查看次数

yq 从键值对中获取值

我有一个简单的values.yaml 文件,其中包含以下数据:

images:
  tags:
    one: abc:v0.3-16-07
    two: xyz:ng-0.23.0
    pq: qaa:0df1e21e752b3d3.2020-04-27_1
Run Code Online (Sandbox Code Playgroud)

使用

yq -r --yaml-output ".images.tags" values.yaml
Run Code Online (Sandbox Code Playgroud)

我可以得到以下输出

one: abc:v0.3-16-07
two: xyz:ng-0.23.0
pq: qaa:0df1e21e752b3d3.2020-04-27_1
Run Code Online (Sandbox Code Playgroud)

但我怎样才能从上面得到这些值呢?

yaml jq yq

6
推荐指数
1
解决办法
3万
查看次数

使用 viper 从 envfile 读取配置

我不太明白 viper 是如何工作的。这是我的代码:

配置.go

var Config *Configuration

type ServerConfiguration struct {
    Port string
}

type Configuration struct {
    Server   ServerConfiguration
}

func Init() {
    var configuration *Configuration
    viper.SetConfigFile(".env")
    viper.AutomaticEnv()
    if err := viper.ReadInConfig(); err != nil {
        log.Fatalf("Error reading config file, %s", err)
    }

    err := viper.Unmarshal(&configuration)
    if err != nil {
        log.Fatalf("Unable to decode into struct, %v", err)
    }

    Config = configuration
}

func GetConfig() *Configuration {
    return Config
}
Run Code Online (Sandbox Code Playgroud)

.env SERVER_PORT=:4747

问题是 Unmarshal 不起作用当我使用例如配置时。Server.Port 它是空的

go viper-go

6
推荐指数
1
解决办法
5526
查看次数

从文件中删除与另一个文件的空行相对应的行

我有两个具有相同行数和列数的文件。用 分隔;。例子;

文件_a:

1;1;1;1;1
2;2;2;2;2
3;3;3;3;3
4;4;4;4;4
Run Code Online (Sandbox Code Playgroud)

文件_b:

A;A;A;A;A
B;B;;;B
;;;;
D;D;D;D;D
Run Code Online (Sandbox Code Playgroud)

忽略分隔符,第 3 行从file_b. 所以我想file_a在命令之前删除第 3 行;

paste -d ';' file_a file_b.

为了有这样的输出:

1;1;1;1;1;A;A;A;A;A
2;2;2;2;2;B;B;;;B
4;4;4;4;4;D;D;D;D;D
Run Code Online (Sandbox Code Playgroud)

编辑:列数为 93,每行和两个文件的列数相同,因此两个文件的行和列矩阵完全相同。

awk paste blank-line

6
推荐指数
2
解决办法
196
查看次数

使用 sed 或 awk 删除倒数第三行文件

我有几个具有不同行号的文本文件,我必须在所有这些文件中删除倒数第三行。这是一个示例文件:

bear
horse
window
potato
berry
cup
Run Code Online (Sandbox Code Playgroud)

此文件的预期结果:

bear
horse
window
berry
cup
Run Code Online (Sandbox Code Playgroud)

我们可以删除文件的倒数第三行吗
?不基于任何字符串/模式。
湾 仅基于它必须是倒数第三行的条件

我对如何从最后一行开始索引我的文件有疑问。我已经从倒数第二行的另一个 SO 问题中尝试过这个:

> sed -i 'N;$!P;D' output1.txt
Run Code Online (Sandbox Code Playgroud)

awk sed ed

6
推荐指数
2
解决办法
257
查看次数

如何使用主键和多列信息将重复行合并到同一行

这是我的数据:

NAME1,NAME1_001,NULL,LIC100_1,NULL,LIC300-3,LIC300-6
NAME1,NAME1_003,LIC000_1,NULL,NULL,NULL,NULL
NAME2,NAME2_001,LIC000_1,NULL,LIC400_2,NULL,NULL
NAME3,NAME3_001,NULL,LIC400_2,NULL,NULL,LIC500_1
NAME3,NAME3_005,LIC000_1,NULL,LIC400_2,NULL,NULL
NAME3,NAME3_006,LIC000_1,NULL,LIC400_2,NULL,NULL
NAME4,NAME4_002,NULL,LIC100_1,NULL,LIC300-3,LIC300-6
Run Code Online (Sandbox Code Playgroud)

预期结果:

NAME1|NAME1_001|NULL|LIC100_1|NULL|LIC300-3|LIC300-6|NAME1_003|LIC000_1|NULL|NULL|NULL|NULL
NAME2|NAME2_001|LIC000_1|NULL|LIC400_2|NULL|NULL
NAME3|NAME3_001|NULL|LIC400_2|NULL|NULL|LIC500_1|NAME3_005|LIC000_1|NULL|LIC400_2|NULL|NULL|NAME3_006|LIC000_1|NULL|LIC400_2|NULL|NULL
NAME4|NAME4_002|NULL|LIC100_1|NULL|LIC300-3|LIC300-6
Run Code Online (Sandbox Code Playgroud)

我尝试了以下命令,但不知道如何添加详细信息(3 美元到 7 美元)

awk '
    BEGIN{FS=","; OFS="|"}; 
    { arr[$1] = arr[$1] == ""? $2 : arr[$1] "|" $2 }   
    END {for (i in arr) print i, arr[i] }' file.csv
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?谢谢!!

awk

6
推荐指数
2
解决办法
79
查看次数

如何使用 awk 根据列名文件列表从具有 500,000 列的空格分隔文件中提取 45,000 列

a.txt 包含 500,000 列和 2000 行。下面的示例文件仅显示该文件中的前 9 列。该文件的标题位于第一行。

chromosome SNPID rsid position alleleA alleleB 2409086 3514581 3635346
1 1:55487346_C_G rs12117661 55487346 C G 1 0 0
1 1:55487648_A_G rs11588151 55487648 A G 1 0 0
1 1:55489542_C_T rs34232196 55489542 C T 1 0 0
1 1:55490861_T_C rs4500361 55490861 T C 1 0 0
1 1:55491702_T_C rs4927191 55491702 T C 0.894118 0 0
1 1:55491780_A_G rs200159426 55491780 A G 0.894118 0 0
Run Code Online (Sandbox Code Playgroud)

b.txt 包含 45000 列,其中显示每行的列名称。我想根据b.txt从a.txt中提取列。

chromosome
SNPID
rsid
position
alleleA …
Run Code Online (Sandbox Code Playgroud)

awk cut

6
推荐指数
1
解决办法
165
查看次数

在模式之间的文本文件中对行进行排序

我正在尝试在Bash或Python中的模式之间对线进行排序。我想基于第二个字段以“,”作为分隔符对行进行排序。

给定以下文本输入文件:

Sample1
T1,64,0.65  MEDIUM
T2,60,0.45  LOW
T3,301,0.68  MEDIUM
T4,65,0.75  HIGH
T5,59,0.72  MEDIUM
T6,51,0.82  HIGH
Sample2
T1,153,0.77  HIGH
T2,152,0.61  MEDIUM
T3,154,0.67  MEDIUM
T4,283,0.66  MEDIUM
T5,161,0.65  MEDIUM
Sample3
T1,147,0.71  MEDIUM
T2,154,0.63  MEDIUM
T3,45,0.63  MEDIUM
T4,259,0.77  HIGH
Run Code Online (Sandbox Code Playgroud)

我期望作为输出:

Sample1
T6,51,0.82  HIGH
T5,59,0.72  MEDIUM
T2,60,0.45  LOW
T1,64,0.65  MEDIUM
T4,65,0.75  HIGH
T3,301,0.68  MEDIUM
Sample2
T2,152,0.61  MEDIUM
T1,153,0.77  HIGH
T3,154,0.67  MEDIUM
T5,161,0.65  MEDIUM
T4,283,0.66  MEDIUM
Sample3
T3,45,0.63  MEDIUM
T1,147,0.71  MEDIUM
T2,154,0.63  MEDIUM
T4,259,0.77  HIGH
Run Code Online (Sandbox Code Playgroud)

我试图通过另一篇文章中的glenn jackman来适应这个建议,但据我测试,它仅适用于2种模式:

> gawk -v cmd="sort -k2" p=1 '
>     /^PATTERN2/ …
Run Code Online (Sandbox Code Playgroud)

python awk sed

5
推荐指数
1
解决办法
62
查看次数

标签 统计

awk ×6

sed ×3

bash ×2

jq ×2

blank-line ×1

curl ×1

cut ×1

ed ×1

go ×1

paste ×1

python ×1

shell ×1

viper-go ×1

yaml ×1

yq ×1