小编Shu*_*ams的帖子

AWK:替换并在输入文件中写入列值

如果$ 3> 100,我试图替换输入文件的$ 3列值.我试过:

awk 'BEGIN {FS="\t"} {if($3 > 100) $3=$3/100;print}' test.stat
Run Code Online (Sandbox Code Playgroud)

这会输出对stdout的正确更改,但是,我需要更改以写入输入文件(test.stat),以便其余字段/记录的值保持不变.有什么建议吗?

谢谢.另一个问题出现了.我有一个"计数器"变量,其总和需要在END块中打印,我试过:

awk 'BEGIN {FS="\t",counter=0} 
{if($3 > 100) $3=$3/100;print else counter++}
END{print counter}' test.stat > ...
Run Code Online (Sandbox Code Playgroud)

现在,只有计数器值写入文件而不是$ 3值.如何将两个输出分开,以便使用read命令修改文件,另一个保存为bash变量.谢谢.

awk

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

AWK:返回shell脚本的值

是否可以在bash脚本中使用awk命令将值返回给bash变量,即,如果我的awk脚本执行某些算术运算,我可以将答案存储在变量中,这样就可以在bash脚本中访问它们.如果可能,如何区分多个返回变量.谢谢.

bash awk

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

如何存档和提取.tar.gz文件

一个简单的问题.在x86 Solaris 10上,我尝试了以下方法来压缩文件的文件夹(Data).

tar -cvf /path/to/Data/* | gzip > /path/to/archive/Data.tar.gz
Run Code Online (Sandbox Code Playgroud)

现在,我可以使用以下命令列出文件名及其大小:

gunzip -c Data.tar.gz
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试解压缩(用于验证)时Data.tar.gz:

gzip -d Data.tar.gz
tar -xvf Data.tar
Run Code Online (Sandbox Code Playgroud)

我收到"校验和错误"

有人可以建议在Solaris 10中压缩和提取文件的正确方法.谢谢

gzip tar solaris-10

5
推荐指数
2
解决办法
7万
查看次数

awk:mktime 返回 -1

有人能帮我理解为什么我在下面的代码中得到 mktime 返回的“-1”。谢谢。

#!/usr/local/bin/bash
f_name="crap.stat"
S_Date="2012-02-10"
E_Date="2012-02-13"

gawk -F '\t' -v s_date="$S_Date" -v e_date="$E_Date" 'BEGIN {s_time = mktime(s_date);e_time = mktime(e_date);print s_time, e_time}' $f_name
Run Code Online (Sandbox Code Playgroud)

awk mktime

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

标签 统计

awk ×3

bash ×1

gzip ×1

mktime ×1

solaris-10 ×1

tar ×1