我发现jq对于将 tsv 转换为 JSON 文件非常有帮助,但是,我想弄清楚当我的 tsv 中有数组时如何使用 jq 来实现:
name age pets
Tim 15 cats,dogs
Joe 11 rabbits,birds
...
Run Code Online (Sandbox Code Playgroud)
理想的 JSON:
[
{
name: "Tim",
age: "15",
pet:["cats","dogs"]
},
name: "Joe",
age: "11",
pet:["rabbits","birds"]
}, ...
]
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的命令:
cat file.tsv | jq -s --slurp --raw-input --raw-output 'split("\n") | .[1:-1] | map(split("\t")) |
map({"name": .[0],
"age": .[1],
"pet": .[2]})'
Run Code Online (Sandbox Code Playgroud)
上述命令的输出是:
[
{
name: "Tim",
age: "15",
pet:"cats,dogs"
},
name: "Joe",
age: "11",
pet:"rabbits,birds"-
}, ...
]
Run Code Online (Sandbox Code Playgroud) 我只想向表格列的第一行添加一个按钮(在示例代码中标有“选项”)。有没有简单的方法来检查 v-if 的行索引v-if="scope.row.index === 0"? scope.row.index不会在这里工作。
<el-table :data="mydata">
<!-- more columns -->
<el-table-column prop="option" label="Option">
<template slot-scope="scope">
<div v-if="scope.row.index === 0">
<el-row>
<el-col>
<el-input v-model="scope.row.option"/>
</el-col>
<el-col>
<el-button @click="">Check</el-button>
</el-col>
</el-row></div>
<div v-else>
<el-input v-model="scope.row.option" />
</div>
</template>
</el-table-column>
<!-- more columns -->
</el-table>
Run Code Online (Sandbox Code Playgroud) 我想打印两列等于变量的行,例如输入:
2607s1 NC_000067.6 95.92 49 1 1 3 50 1e-14 84.2
2607s1 NC_000067.6 97.73 44 1 0 7 50 4e-14 84.2
2607s1 NC_000067.6 97.67 43 1 0 8 50 1e-13 75.0
Run Code Online (Sandbox Code Playgroud)
和第一列和最后一列的变量:
a="2607s1"; b="84.2"
Run Code Online (Sandbox Code Playgroud)
并使用awk命令,输出:
2607s1 NC_000067.6 95.92 49 1 1 3 50 1e-14 84.2
2607s1 NC_000067.6 97.73 44 1 0 7 50 4e-14 84.2
Run Code Online (Sandbox Code Playgroud)
我尝试了以下但不工作:
awk -v '$1==$a' && '$10==$b' test_file
cat test_file|awk '$1=="($a)" && $10=="($b)"'
cat test_file|awk '$1==($a) && $10==($b)'
cat test_file|awk '$1=="$a" && $10=="$b"'
Run Code Online (Sandbox Code Playgroud)
而且,我在一个while循环中运行它,所以$a并且 …
我有一个零数组
declare -a MY_ARRAY=( $(for i in {1..100}; do echo 0; done) )
Run Code Online (Sandbox Code Playgroud)
例如,如何将 12-25th 设置为“1”?我试过了:
MY_ARRAY[12..25]=1
MY_ARRAY[12:25]=1
MY_ARRAY[12-25]=1
Run Code Online (Sandbox Code Playgroud)
都没有工作..
范围 12-25 将是从另一个文件获得的变量。我正在寻找一个简单的解决方案,最好不要参与循环
请帮忙
例如,是否有更好的方法可以将两列或更多列打印到一列中
输入文件
AAA 111
BBB 222
CCC 333
Run Code Online (Sandbox Code Playgroud)
输出:
AAA
BBB
CCC
111
222
333
Run Code Online (Sandbox Code Playgroud)
我只能想到:
cut -f1 input.file >output.file;cut -f2 input.file >>output.file
Run Code Online (Sandbox Code Playgroud)
但是,如果有很多列,或者我想将输出传递给其他命令,那就不好了sort.
还有其他建议吗?非常感谢你!
bash ×4
arrays ×2
awk ×2
csv ×1
cut ×1
element-ui ×1
html-table ×1
jq ×1
json ×1
row ×1
sed ×1
unix ×1
variables ×1
vue.js ×1
while-loop ×1