Sta*_*ker 6 linux text-processing
我有一个如下所示的文件:
10-04-2022 00:39:13,36707,1455008753,32
11-05-2022 00:39:13,36708,1555008753,26
21-05-2022 00:39:13,36708,1555408753,15
12-06-2022 00:39:13,36709,1655008753
Run Code Online (Sandbox Code Playgroud)
因为最后一个字段的值与下一行的运行时间相关,所以我想将它们向下移动到这种方式以便与 gnuplot 一起使用。
10-04-2022 00:39:13,36707,1455008753,
11-05-2022 00:39:13,36708,1555008753,32
21-05-2022 00:39:13,36708,1555408753,26
12-06-2022 00:39:13,36709,1655008753,15
Run Code Online (Sandbox Code Playgroud)
Jef*_*ler 12
一个简单的 awk 脚本可以做到这一点:
awk 'BEGIN {FS=OFS=","} { tmp=$NF; $NF=save; print; save=tmp; }' < input > output
Run Code Online (Sandbox Code Playgroud)
这会将第四个字段保存到临时变量中,用之前保存的值替换第四个字段,然后打印新行。打印后,它会保存第四个字段的先前值以供下一次迭代使用。在第一行,“save”d值为空(默认的awk行为),这达到了预期的结果。
“BEGIN”部分将字段分隔符(用于分割输入)和输出字段分隔符(在打印行/字段时使用)设置为逗号。请参阅本地awk手册页、各种在线参考资料或awk 的 Open Group 基本规范以了解更多信息。
另一个awk解决方案,在 GNU 5.1.0 上测试awk。
$ awk -F, -v OFS=, '{print $1,$2,$3,x;x=$NF}' myfile
10-04-2022 00:39:13,36707,1455008753,
11-05-2022 00:39:13,36708,1555008753,32
21-05-2022 00:39:13,36708,1555408753,26
12-06-2022 00:39:13,36709,1655008753,15
$
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
432 次 |
| 最近记录: |