小编Yod*_*oda的帖子

循环文件中的行并从当前行减去前一行

我有一个包含一些数字的文件

$ cat file.dat
0.092593
0.048631
0.027957
0.030699
0.026250
0.038156
0.011823
0.013284
0.024529
0.022498
0.013217
0.007105
0.018916
0.014079
Run Code Online (Sandbox Code Playgroud)

我想创建一个新文件,其中包含当前行与前一行的差异。预期输出应该是

$ cat newfile.dat
-0.043962
-0.020674
0.002742
-0.004449
0.011906
-0.026333
0.001461
0.011245
-0.002031
-0.009281
-0.006112
0.011811
-0.004837
Run Code Online (Sandbox Code Playgroud)

认为这是微不足道的,我从这段代码开始

f="myfile.dat"    
while read line; do
    curr=$line
    prev=

    bc <<< "$line - $prev" >> newfile.dat
done < $f
Run Code Online (Sandbox Code Playgroud)

但我很快意识到我不知道如何访问文件中的前一行。我想我还需要考虑到在阅读第一行时不应该进行减法。任何有关如何进行的指导表示赞赏!

scripting bash shell-script

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

从文件名和文件内容中提取信息

我生成了一堆文件,它们都只包含一个数字。然后我在每个文件名中有一些关于这些文件的信息。我想要做的是将所有文件内容作为新文件中的一列收集,然后将每个文件名的一部分作为这个新文件中的单独列。

文件名如下所示:traj-num1-iter-num2-states-num3.gradient,其中 num1、num2 和 num3 只是不同的数字。我想要的一个例子:

$ cat traj-10-iter-220-states-01.gradient
-0.0014868599999999788

$ cat newfile
traj    iter     states    gradient
10      220      01        -0.0014868599999999788
Run Code Online (Sandbox Code Playgroud)

我怀疑这可以实现,但我不知道如何实现。

scripting text-processing filenames

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

sed:仅打印模式匹配的第一次出现

有几个问题与这个问题类似,但是当我想在多行中搜索模式时,我还没有找到有效的解决方案。下列

sed -n '/First string/,/Second string/ p' my.file
Run Code Online (Sandbox Code Playgroud)

将打印匹配模式的所有出现,但我只想要第一次出现。我正在使用 GNU sed。

sed

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

标签 统计

scripting ×2

bash ×1

filenames ×1

sed ×1

shell-script ×1

text-processing ×1