我有这个单行:
get-WmiObject win32_logicaldisk -Computername remotecomputer
Run Code Online (Sandbox Code Playgroud)
输出是这样的:
DeviceID : A:
DriveType : 2
ProviderName :
FreeSpace :
Size :
VolumeName :
DeviceID : C:
DriveType : 3
ProviderName :
FreeSpace : 20116508672
Size : 42842714112
VolumeName :
DeviceID : D:
DriveType : 5
ProviderName :
FreeSpace :
Size :
VolumeName :
Run Code Online (Sandbox Code Playgroud)
如何获得Freespace和Size的DeviceID C:?我需要提取这两个值而没有其他信息.我用Selectcmdlet 尝试过,但没有效果.
编辑: 我只需要提取数值并将它们存储在变量中.
我有一个应用程序每天生成一个非常重的大日志文件(每天约800MB),因此我需要压缩它们但由于压缩需要时间,我希望logrotate在重新加载/向应用程序发送HUP信号后压缩文件.
/var/log/myapp.log {
rotate 7
size 500M
compress
weekly
postrotate
/bin/kill -HUP `cat /var/run/myapp.pid 2>/dev/null` 2>/dev/null || true
endscript
}
Run Code Online (Sandbox Code Playgroud)
压缩是否已经发生在postrotate之后(这会违反直觉)?如果没有,任何人都可以告诉我,如果没有额外的命令脚本(一个选项或一些技巧)可以做到这一点吗?
谢谢托马斯
我一直在寻找一种使用perl函数执行以下操作的方法map:给定一个哈希,我想提取值等于或匹配指定参数的对(键,值).
在我的例子我想从哪里提取(键,值)对value = failed,但它也可能是一个表达式(即以A开头的字符串或正则表达式).这就是为什么我想要一个哈希值,而不仅仅是一个与值匹配的键表.
my %strings = (
bla => "success",
ble => "failed",
bli => "failed",
foo => "success",
blo => "failed",
bar => "failed",
blu => "success"
);
my %failed_s = ();
while (my ($k, $v) = each %strings) {
if ( $v eq 'failed' ) {$failed_s{$k} = $v};
};
Run Code Online (Sandbox Code Playgroud)
我尝试了几种方法,但没有很好的结果,所以我觉得我对引用,矫揉造作,结果等感到困惑.
my %failed_s =
map { { $_ => $strings{$_} }
if ( $strings{$_}./failed/ ) }
keys %strings;
my %failed_s =
map { ( …Run Code Online (Sandbox Code Playgroud) 当我声明我的 Go 环境时(即使用简单导出的 GOPATH 和 GOROOT):
export GOROOT=/usr/lib/go-1.9/
export GOPATH=/my/workspace/go
Run Code Online (Sandbox Code Playgroud)
当前终端正常识别变量,但如果我打开另一个终端窗口,这些变量没有设置,需要从头开始重新配置。
除了像编辑 .bashrc 文件这样的常见方法之外,是否有一种特定于 go 的方法来设置 go 环境变量的默认值?
bash ×1
compression ×1
extraction ×1
go ×1
linux ×1
logging ×1
logrotate ×1
map ×1
perl ×1
powershell ×1
scripting ×1
shell ×1