小编Pau*_*aul的帖子

如何使用 awk 打印值之间的引号

我有一个文件

A|B|C|D|E|F
Run Code Online (Sandbox Code Playgroud)

我需要像这样的输出

"A","B","C","D","E","F"
Run Code Online (Sandbox Code Playgroud)

我做了:

awk -f'|' '{print $1,$2,$3}'
Run Code Online (Sandbox Code Playgroud)

这给了我只有空格的输出。我的问题是如何使用引号获取逗号分隔的输出,以及如何在不输入的情况下一次打印所有值'{print $1,$2,$3......}'

我可以:

awk -f'|' '{print """"$1""""","""""$2""""","""""$3""""..}'
Run Code Online (Sandbox Code Playgroud)

但这不起作用。

awk field separator output

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

如何根据第一列awk分割文件

我举例说明了我需要做的事情:

INPUT:

name value1 value2 value3
john xxxxx yyyyy qqqqqq
john xxxxx ddddd vvvvvv
john mmmmm jjjjj llllll
paul xxxxx yyyyy qqqqqq
paul ccccc ccccc dddddd
Run Code Online (Sandbox Code Playgroud)

我需要在第一列中保留标题并将其拆分为相同名称的文件.我需要根据第一列继续命名我的输出文件.

输出:

FILE1:john.tsv

name value1 value2 value3
john xxxxx yyyyy qqqqqq
john xxxxx ddddd vvvvvv
john mmmmm jjjjj llllll
Run Code Online (Sandbox Code Playgroud)

FILE2:paul.tsv

name value1 value2 value3
paul xxxxx yyyyy qqqqqq
paul ccccc ccccc dddddd
Run Code Online (Sandbox Code Playgroud)

INPUT和OUTPUT文件是标签分开的.标题总是一样的.

我的解决方案非常复杂和缓慢:

head -1 INPUT > header

awk 'NR>1{print $1}' | sort | uniq > names

while …
Run Code Online (Sandbox Code Playgroud)

unix bash awk sed

2
推荐指数
1
解决办法
298
查看次数

如果awk中的行相同,则打印空间

如果我的行相同,我想打印空格或点.

看例子:

INPUT:

row1 xx yy zz
row1 xx yy zz
row1 xx yy zz
row2 aa bb cc
row2 aa bb cc
row3 gg hh oo
Run Code Online (Sandbox Code Playgroud)

OUTPUT:

row1 xx yy zz
     xx yy zz
     xx yy zz
row2 aa bb cc
     aa bb cc 
row3 gg hh oo
Run Code Online (Sandbox Code Playgroud)

有没有简单的方法来打印空间?

感谢您的任何帮助.

bash awk uniq

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

如何将特定列与其余列分开

我有这样的矩阵(第一列名称其余是值,分隔符 i 选项卡):

name1 A1 B1 C1 D1
name2 A2 B2 C2 D2
Run Code Online (Sandbox Code Playgroud)

矩阵可能很大(这意味着大约数百行和列)。它是相同大小的。我可以期待零值。

我需要这样的输出:

name1 A1 B1 C1 D1 A1/B1 A1/C1 A1/D1
name2 A2 B2 C2 D2 A2/B2 A2/C2 A2/D2
Run Code Online (Sandbox Code Playgroud)

这个组合保存到新文件。然后再做一个组合:

name1 A1 B1 C1 D1 B1/A1 B1/C1 B1/D1
name2 A2 B2 C2 D2 B2/A2 B2/C2 B2/D2
Run Code Online (Sandbox Code Playgroud)

依此类推 => 将每一列与矩阵中的其余列分开并另存为 TSV 到新文件。并且也四舍五入到小数点后三位。

我可以使用脚本手动执行此操作:

awk '{OFS="\t"}{$6=$2/($3+0.001); $7=$2/($4+0.001); $8=$2/($5+0.001)}1' input_file.tsv
Run Code Online (Sandbox Code Playgroud)

我添加数字 0.001 的原因是不可能除以零。我可以用 wile 循环创建 shell 脚本,但需要很长时间。

我会很高兴这个过程的任何自动化。

shell statistics awk r python-3.x

0
推荐指数
1
解决办法
152
查看次数

标签 统计

awk ×4

bash ×2

field ×1

output ×1

python-3.x ×1

r ×1

sed ×1

separator ×1

shell ×1

statistics ×1

uniq ×1

unix ×1