我有一个文件
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)
但这不起作用。
我举例说明了我需要做的事情:
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) 如果我的行相同,我想打印空格或点.
看例子:
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)
有没有简单的方法来打印空间?
感谢您的任何帮助.
我有这样的矩阵(第一列名称其余是值,分隔符 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 脚本,但需要很长时间。
我会很高兴这个过程的任何自动化。