小编Kay*_*Kay的帖子

在shell中将.txt转换为.csv

我有一个文本文件:

ifile.txt
1  4    22.0  3.3 2.3
2  2    34.1  5.4 2.3
3  2    33.0 34.0 2.3
4 12     3.0 43.0 4.4
Run Code Online (Sandbox Code Playgroud)

我想将其转换为csv文件:

ofile.txt
ID,No,A,B,C
1,4,22.0,3.3,2.3
2,2,34.1,5.4,2.3
3,2,33.0,34.0,2.3
4,12,3.0,43.0,4.4
Run Code Online (Sandbox Code Playgroud)

我正在尝试这个,但没有得到结果.

(echo "ID,No,A,B,C" ; cat ifile.txt) | sed 's/<space>/<comma>/g' > ofile.csv
Run Code Online (Sandbox Code Playgroud)

linux csv shell awk

12
推荐指数
3
解决办法
4万
查看次数

没有文件的awk打印

如何使用没有文件的awk进行打印.

script.sh
#!/bin/sh
for i in {2..10};do
awk '{printf("%.2f %.2f\n", '$i', '$i'*(log('$i'/('$i'-1))))}'
done
Run Code Online (Sandbox Code Playgroud)

sh script.sh

Desired output
2   value
3   value
4   value
and so on
Run Code Online (Sandbox Code Playgroud)

value表示计算后的数量

awk gawk

8
推荐指数
3
解决办法
3291
查看次数

使用awk将列转换为矩阵格式

我有一个列格式的网格数据文件:

ifile.txt
x     y     value
20.5  20.5  -4.1
21.5  20.5  -6.2
22.5  20.5   0.0
20.5  21.5   1.2
21.5  21.5   4.3
22.5  21.5   6.0
20.5  22.5   7.0
21.5  22.5  10.4
22.5  22.5  16.7
Run Code Online (Sandbox Code Playgroud)

我想将其转换为矩阵格式为:

ofile.txt
     20.5  21.5 22.5
20.5 -4.1   1.2  7.0
21.5 -6.2   4.3 10.4
22.5  0.0   6.0 16.7
Run Code Online (Sandbox Code Playgroud)

top 20.5 21.5 22.5表示y,side值表示x,内部值表示相应的网格值.

我在这里找到了一个类似的问题将3列文件转换为矩阵格式,但脚本在我的情况下不起作用.

脚本是

awk '{ h[$1,$2] = h[$2,$1] = $3 }
    END {
      for(i=1; i<=$1; i++) {
        for(j=1; j<=$2; j++)
          printf h[i,j] OFS
        printf "\n" …
Run Code Online (Sandbox Code Playgroud)

linux shell awk

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

shell中多个文件的平均值

我想计算15个文件的平均值: - ifile1.txt,ifile2.txt,.....,ifile15.txt.每个文件的列数和行数相同.部分数据看起来像

ifile1.txt      ifile2.txt       ifile3.txt
3  5  2  2 .    1  2  1  3 .    4  3  4  1 .
1  4  2  1 .    1  3  0  2 .    5  3  1  5 .
4  6  5  2 .    2  5  5  1 .    3  4  3  1 .
5  5  7  1 .    0  0  1  1 .    4  3  4  0 .
.  .  .  . .    .  .  .  . .    .  .  .  . …
Run Code Online (Sandbox Code Playgroud)

unix shell awk mean

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

计算外壳脚本中矩阵中沿行和列连接的非零数,但不计算对角线数

我有一个矩阵。ega 10 x 15矩阵

$ cat input.txt
2  3  4  5  10 0  2  2  0  1  0  0  0  1  0
0  3  4  6  2  0  2  0  0  0  0  1  2  3  40
0  0  0  2  3  0  3  0  3  1  2  3  1  0  0
1  2  0  4  0  3  4  0  4  1  2  0  0  1  1
0  0  0  0  0  0  10 3  4  12 4  5  12 …
Run Code Online (Sandbox Code Playgroud)

python shell perl awk fortran

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

Linux中print命令中的数学表达式

我不能在这个命令中弄错我:

a=2
b=5
c=3
printf "%.2f\t" "'$a'+'$c'*'$b'" > ofile.txt
Run Code Online (Sandbox Code Playgroud)

我得到的值为50.00.但我应该得到17.00.

当a,b,c是浮动值时如何做到这一点?例如a = 2.4,b = 5.1和c = 3.2

linux shell printf

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

如何在shell中使用多列进行循环?

我有一个包含三列(ID 号、x、y)的文件

ifile.txt
1      32.2    21.4
4      33.2    43.5
5      21.3    45.6
12     22.3    32.5
32     21.5    56.3
43     33.4    23.4
44     23.3    22.3
55     22.5    32.4
Run Code Online (Sandbox Code Playgroud)

我想在第 2 列和第 3 列上做一个循环,这样读起来就像

for x=32.2 and y=21.4; do execute a fortran program
for x=33.2 and y=43.5; do execute the same program
and so on
Run Code Online (Sandbox Code Playgroud)

尽管我的以下脚本正在运行,但我需要以有效的方式使用它。

s1=1   #serial number
s2=$(wc -l < ifile.txt)   #total number to be loop
while [ $s1 -le $s2 ]
do
x=$(awk 'NR=='$s1' {print $2}' ifile.txt)
y=$(awk 'NR=='$s1' …
Run Code Online (Sandbox Code Playgroud)

linux shell awk

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

稍后执行脚本的命令

我想在12小时后执行一个脚本.我可以通过远程访问来执行脚本,但问题是我将乘飞机旅行并且可能无法访问互联网.所以我想知道是否有一些命令在几个小时后或某个特定时间执行脚本.例如,

cat my_script.sh
echo Hello World
run my_script.sh at 23:00 hr
Run Code Online (Sandbox Code Playgroud)

linux bash execute sh wait

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

如何使用 awk 重新排列列?

我有一个包含 120 列的文件。其中一部分在这里,有 12 根柱子。

A1      B1     C1      D1       A2      B2     C2      D2       A3      B3      C3      D3     
4       4       5       2       3       3       2       1       9       17      25      33
5       6       4       6       8       2       3       5       3       1       -1      -3
7       8       3       10      13      1       4       9       -3      -15     -27     -39
9       10      2       14      18      0       5       13      -9      -31     -53     -75
11      12      1       18      23      -1      6       17      -15     -47     -79     -111
13      14      0 …
Run Code Online (Sandbox Code Playgroud)

linux shell awk

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

概率在排除零之后分配数组中的每个唯一数字(长度未知)

我的部分数据文件看起来像

ifile.txt
1
1
3
0
6
3
0
3
3
5
Run Code Online (Sandbox Code Playgroud)

我想找出除零之外的每个数字的概率.例如P(1)= 2/8; P(3)= 4/8,依此类推

欲望输出

ofile.txt
1  0.250
3  0.500
5  0.125
6  0.125
Run Code Online (Sandbox Code Playgroud)

第1列显示除0和第2列之外的唯一数字显示概率.我正在尝试如下,但看起来非常冗长的想法.我在for循环中遇到问题,因为有很多唯一的数字

n=$(awk '$1 > 0 {print $0}' ifile.txt | wc -l)
for i in 1 3 5 6 .....
do
n1=$(awk '$1 == $i {print $0}' ifile.txt | wc -l)
p=$(echo $n1/$n | bc -l)
printf "%d %.3f\n" "$i $p" >> ofile.txt
done
Run Code Online (Sandbox Code Playgroud)

unix linux shell awk probability-density

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

标签 统计

awk ×8

shell ×8

linux ×7

unix ×2

bash ×1

csv ×1

execute ×1

fortran ×1

gawk ×1

mean ×1

perl ×1

printf ×1

probability-density ×1

python ×1

sh ×1

wait ×1