我正在导入一个 csv,我想向其中添加一列(结果基于前一列)
我的数据看起来像这样
host address,host prefix,site
10.1.1.0,24,400-01
Run Code Online (Sandbox Code Playgroud)
我想添加一个名为“子站点”的列
所以我写了这个模块,但问题是,实际的结束对象是一个数组而不是字符串
function site {
Param($s)
$s -match '(\d\d\d)'
return $Matches[0]
}
$csv = import-csv $file | select-object *,@{Name='Sub Site';expression= {site $_.site}}
Run Code Online (Sandbox Code Playgroud)
如果我运行命令
PS C:\>$csv[0]
Host Address :10.1.1.0
host prefix :24
site :400-01
sub site : {True,400}
Run Code Online (Sandbox Code Playgroud)
什么时候应该看起来像
PS C:\>$csv[0]
Host Address :10.1.1.0
host prefix :24
site :400-01
sub site : 400
Run Code Online (Sandbox Code Playgroud)
编辑:我找到了解决方案,但现在的问题是为什么。
如果我将函数更改为$s -match "\d\d\d" |out-null 返回预期的 400
所以我知道有一些库可以为我做到这一点,但我想学习打包/解包。
我的目标是让用户输入一个 ip 地址/子网掩码,然后验证它是否有效。
我想到的一种方法是“sprintf”并获得一个二进制值,比如 192.168.1.1 。这是一个不错的解决方案,但随后我需要预先添加所需数量的 0 使其成为“8 位”
当pack可以将东西放入二进制格式时,这似乎是很多不必要的工作。我使用了N我找到的模板http://perldoc.perl.org/functions/pack.html 我的第一个目标是获取 IP 地址,将其转换为二进制,然后再将其转换回来。
$ip = "192.168.1.1";
$bi = pack ("N*", $ip);
print unpack("N*",$bi),"\n";
Run Code Online (Sandbox Code Playgroud)
我得到的输出192很明显我不明白这里发生了什么。
这里到底发生了什么?
我刚开始使用"Java资源文件",我有几个问题......
这就是我所做的.创建一个新的资源文件,因为我使用NetBeans,我可以在它看起来像这样导航器中的文件标签下看到它的位置:
这是我如何尝试访问它,但当我调试它回来null.
private void getPaths()//todo
{
try
{
InputStream is = getClass().getResourceAsStream("/resources/directories.txt");
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null)
{
System.out.println(line);
}
br.close();
isr.close();
is.close();
}
catch(Exception e)
{
}
}
Run Code Online (Sandbox Code Playgroud) 为什么这个perl REGEX不工作?我抓住了日期和用户名(日期工作正常),但它会抓住所有用户名然后当它击中bob.thomas并抓住整条线
码:
m/^(.+)\s-\sUser\s(.+)\s/;
print "$2------\n";
Run Code Online (Sandbox Code Playgroud)
样本数据:
Feb 17, 2013 12:18:02 AM - User plasma has logged on to client from host
Feb 17, 2013 12:13:00 AM - User technician has logged on to client from host
Feb 17, 2013 12:09:53 AM - User john.doe has logged on to client from host
Feb 17, 2013 12:07:28 AM - User terry has logged on to client from host
Feb 17, 2013 12:04:10 AM - User bob.thomas has been logged off from …Run Code Online (Sandbox Code Playgroud) 我的文件的最后一行应该是“#”
如果我的 tail -n 1 * | grep -L "#"结果(standard input)显然是因为它正在通过管道传输。
希望有一个 grep 解决方案,而不是读取整个文件并只搜索最后一行。