我想知道是否有可能编写一个100%可靠的sed命令来转义输入字符串中的任何正则表达式元字符,以便它可以在后续的sed命令中使用.像这样:
#!/bin/bash
# Trying to replace one regex by another in an input file with sed
search="/abc\n\t[a-z]\+\([^ ]\)\{2,3\}\3"
replace="/xyz\n\t[0-9]\+\([^ ]\)\{2,3\}\3"
# Sanitize input
search=$(sed 'script to escape' <<< "$search")
replace=$(sed 'script to escape' <<< "$replace")
# Use it in a sed command
sed "s/$search/$replace/" input
Run Code Online (Sandbox Code Playgroud)
我知道有更好的工具可以使用固定字符串而不是模式,例如awk,perl或python.我想证明是否有可能sed.我会说让我们专注于基本的POSIX正则表达式,以获得更多乐趣!:)
我已经尝试了很多东西,但任何时候我都能找到一个打破了我的尝试的输入.我认为保持它是抽象的,因为script to escape不会导致任何人走错方向.
顺便说一下,讨论在这里提出来了.我认为这可能是收集解决方案的好地方,可能会破坏和/或详细说明.
类型转换和使用函数将变量转换为某种类型之间有什么区别吗?
(float)$var VS. floatval($var)
如果有的话,应该使用其中一个而不是另一个?
什么可以导致php gd在调整大小后产生黑色图像?以下代码始终为每个有效的jpeg文件输出黑色图像.
<?php
$filename = 'test.jpg';
$percent = 0.5;
header('Content-Type: image/jpeg');
list($width, $height) = getimagesize($filename);
$newwidth = $width * $percent;
$newheight = $height * $percent;
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagejpeg($thumb);
imagedestroy($thumb);
?>
Run Code Online (Sandbox Code Playgroud)
输出gd_info():
Array
(
[GD Version] => bundled (2.1.0 compatible)
[FreeType Support] => 1
[FreeType Linkage] => with freetype
[T1Lib Support] =>
[GIF Read Support] => 1
[GIF Create Support] => 1
[JPEG Support] …Run Code Online (Sandbox Code Playgroud) 我在Unix中创建了一个别名,发现以下命令失败了..
alias logspace='find /apps/ /opt/ -type f -size +100M -exec ls -lh {} \; | awk '{print $5, $9 }''
Run Code Online (Sandbox Code Playgroud)
我得到以下内容:
awk: cmd. line:1: {print
awk: cmd. line:1: ^ unexpected newline or end of string
Run Code Online (Sandbox Code Playgroud)
关于为什么管道awk命令失败的任何想法......
谢谢,肖恩.
我很困惑PHP中的"静态"和"动态"函数和对象如何协同工作,特别是关于__callStatic().
__callStatic()的工作原理如下:
你可以有一个普通的类MyClass,你可以在类中放置一个名为__callStatic()的静态函数,只有当MyClass没有你想要的名字的静态函数时才会调用它.
即我打电话
MyClass::newFunction();
newFunction()被静态调用,但MyClass没有声明它.所以,然后__callStatic()被调用,你可以说Run Code Online (Sandbox Code Playgroud)$myObject=new SomeOtherClass(); $myObject->newFunction();它调用你想要的函数但是在其他一些对象上.
精简版:
换句话说,__ callStatic()执行此操作:
MyClass::newFunction();
Run Code Online (Sandbox Code Playgroud)
这隐藏了这个:
(new SomeOtherClass())->newFunction();
Run Code Online (Sandbox Code Playgroud)
说什么呢?看起来代码从类中调用静态函数看起来就是从其他类调用该函数并通过实例化调用它,而不是静态调用.
请解释一下!
为什么这样做?你可以在其他地方做这样的事情,比如C++或Java吗?我正在寻找关于语言中静态和动态函数的简短而简洁但有用的解释,在这种情况下,无论是__callStatic()violates还是conforms语言结构的大图.或者它完全是一种新的语言结构.
嗨我有一个csv文件有2个coloumns第一列有名称和secons有值.我想要的是一个脚本,它可以将第二列的值和csv的最后一行中的打印输出总和为Total
文件示例: -
CNG 2128485188
WND 222047363
HUM 283010928
AINGO 253694944
Run Code Online (Sandbox Code Playgroud)
我正在使用的命令是在最后一行打印但总计为0.
$ awk '{print;s+=$2}END{printf "Total %'\''d\n",s}' /cygdrive/c/KPI/test/SCCP_ADMIN_RAW2.csv | tail -10
LIMIT,27789
VDEOT,21109
CELZA,627
DUUNI,26636
EMBLT,1255927
URA,521
MONTE,1789
EGLMO,391
DGTEL,394
Total 0
Run Code Online (Sandbox Code Playgroud) 是的,我知道,很难相信这些FTP服务器仍然存在,但它们确实存在.IBM iSeries机器运行此类服务器.
我已经有涉及一个答案ftp_nlist和in_array,但正如一些你可能已经猜到了,这是缓慢的,当一个目录中包含了大量的项目.
由于缺乏对SIZE的支持,fopen在读取模式下使用时总是会失败(请记住xFTP包装器不支持),而ftp_size总是返回-1(预期)并且file_exists总是返回false(可能因为它在内部使用SIZE?).
ftp_get并且ftp_fget做到这一点,但是如果它存在,他们会下载整个文件.不是很好.一种可能的解决方案是使用ftp_fget传递仅在读取模式下打开的文件的处理程序,并捕获引发的警告.当文件不存在时它会有所不同,但这个解决方案感觉粗鲁,我真的不知道它是否可行(也许有人可以给出一个例子).
另一种解决方案使用ftp_nb_get/ ftp_nb_fget来尝试检索文件.如果函数返回0(FTP_FAILED),则该文件可能不存在.我仍然需要处理一个临时的本地文件,如果FTP_MOREDATA返回(或者无法发出其他FTP命令),它很难关闭并重新打开连接 .
你对此有什么想法吗?
我正在开发一个PHP应用程序,它使用HTTP响应代码进行通信以及响应主体.所以这是PHP代码中的典型场景:
try {
doSomething();
}
catch (Exception $e) {
header('HTTP/1.1 500 Internal Server Error');
}
Run Code Online (Sandbox Code Playgroud)
...而客户端中的典型代码如下所示:
switch(responseCode) {
case 200 :
// all fine
// ....
case 500 :
// trouble!
}
Run Code Online (Sandbox Code Playgroud)
这很酷,只要PHP代码中捕获到每个错误.
问题:如果由于PHP代码中的任何原因发生未被捕获的错误或语法错误等无法捕获的错误,Apache将发送200 OK.但我不想说500内部服务器错误.也许每个.htaccess左右.
有人知道Python在循环时如何排列文件吗?我需要以固定顺序循环遍历文件夹中的某些文件(最好根据文件名以字母数字的形式),但Python似乎以相当随机的顺序循环遍历它们.到目前为止,我正在使用此代码:
filelist = glob.glob(os.path.join(path, 'FV/*.txt'))
for infile in filelist:
#do some fancy stuff
print str(infile)
Run Code Online (Sandbox Code Playgroud)
并且文件名按照对我来说不太明显的顺序打印.
有没有简单的方法来预定义该循环的某个顺序?谢谢!
我和这个家伙有类似的问题:
但我不需要编号,我只是想了解它的工作方式:
<?xml version="1.0" encoding="UTF-8"?>
<test>
<a>blah</a>
<a>blah</a>
<a>blah</a>
<a>blah</a>
</test>
Run Code Online (Sandbox Code Playgroud)
对于此输入,以下样式表:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="select">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="a">
<xsl:value-of select="position()"/><br/>
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
输出:
<html><body>
2<br>blah
4<br>blah
6<br>blah
8<br>blah
</body></html>
Run Code Online (Sandbox Code Playgroud)
为什么跳过不均匀的数字?