如果$ 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变量.谢谢.
是否可以在bash脚本中使用awk命令将值返回给bash变量,即,如果我的awk脚本执行某些算术运算,我可以将答案存储在变量中,这样就可以在bash脚本中访问它们.如果可能,如何区分多个返回变量.谢谢.
一个简单的问题.在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中压缩和提取文件的正确方法.谢谢
有人能帮我理解为什么我在下面的代码中得到 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)