我只是想在BASH脚本中匹配一些文本,我尝试使用sed,但我似乎无法让它只输出匹配而不是替换它.
echo -E "TestT100String" | sed 's/[0-9]+/dontReplace/g'
Run Code Online (Sandbox Code Playgroud)
将输出:TestTdontReplaceString
这不是我想要的,我希望它输出:100
理想情况下,我希望它将所有匹配放在一个数组中.
编辑:文本输入以字符串形式出现:
newName()
{
#Get input from function
newNameTXT="$1"
if [[ $newNameTXT ]]; then
#Use code that im working on now, using the $newNameTXT string.
fi
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试将数据插入到我的SQlite3数据库中(这可以通过命令行工作).我给了data1.db文件777权限,但仍然说它无法打开文件.
我收到此错误:
Warning: SQLite3::exec() [sqlite3.exec]: unable to open database file in /var/www/test.php on line 3
Run Code Online (Sandbox Code Playgroud)
使用此代码:
$db = new SQLite3('./data1.db');
$db->exec("INSERT INTO table1 (fileName) VALUES ('test.txt')");
Run Code Online (Sandbox Code Playgroud)
但奇怪的是我可以从数据库中读取:(这有效)
print_r($db->querySingle('SELECT fileName FROM table1', true));
Run Code Online (Sandbox Code Playgroud)
我正在运行PHP 5.3.0
我正在研究一些旧代码,我发现我曾经使用过
sed -E 's/findText/replaceWith/g' #findText would contain a regex
Run Code Online (Sandbox Code Playgroud)
但我现在试试
sed -e 's/findText/replaceWith/g'
Run Code Online (Sandbox Code Playgroud)
它似乎做同样的事情,或者它呢?我有点记得有一个原因我做了但我不记得并且做"man sed"没有帮助,因为他们没有任何关于-E only -e,这没有太多意义以太.
-e, --expression=script
Append the editing commands in script to the end of
the editing command script. script may contain more
than one newline separated command.
Run Code Online (Sandbox Code Playgroud)
我想 - 这意味着它会与正则表达式相匹配......
GNU sed version 4.2.1
Run Code Online (Sandbox Code Playgroud) 在你说这是重复之前继续阅读,但事实并非如此.(据我所见)
我想从客户端获取php中的县代码.
是的我知道你可以使用外部网站或"geoip_record_by_name"这样做,但我不想依赖外部网站,我不能使用shard Dreamhost托管为php安装"pear".
我以为我可以这样做:
$output = shell_exec('whois '.$ip.' -H | grep country | awk \'{print $2}\'');
echo "<pre>$output</pre>";
Run Code Online (Sandbox Code Playgroud)
但是dreamhost似乎有一个旧版本的whois(4.7.5),所以我在分配的IP上得到了这个错误:
Unknown AS number or IP network. Please upgrade this program.
Run Code Online (Sandbox Code Playgroud)
因此,除非有人知道如何将一个较新版本的whois的二进制文件放到dreamhost上.
或者是否有另一种方法可以从正在加载页面的客户端获取国家/地区代码?
我怎么能得到awk输出$ 9 $ 10 $ 11等等,因为我的一些文件中有空格.
ls -l | awk '{print $9}'
Run Code Online (Sandbox Code Playgroud) 如何检查int变量($ inputNo)以查看它是否是2位或更多位十进制数字?
例:
inputNo="5"
Run Code Online (Sandbox Code Playgroud)
应改为:05
inputNo="102"
Run Code Online (Sandbox Code Playgroud)
应该独处:102
我想过使用wc和if语句,但wc -m似乎没有给出传入的实际字符wc,因为wc似乎总是给出给出的字符+1.
但我不知道如何在当前输入数字前添加0.
我如何进行正则表达式匹配,如下所示,但在("^ This")周围引用,如在现实世界中"This"将是一个可以在其中包含空格的字符串.
#!/bin/bash
text="This is just a test string"
if [[ "$text" =~ ^This ]]; then
echo "matched"
else
echo "not matched"
fi
Run Code Online (Sandbox Code Playgroud)
我想做点什么
if [[ "$text" =~ "^This is" ]]; then
Run Code Online (Sandbox Code Playgroud)
但这不匹配.
我正在阅读另一个问题,这个问题对于这项工作有一些非常好的正则表达式,但据我所知,由于BASH命令不支持这种复杂的rexeg,因此我们可以看到它们不能与BASH命令一起使用.
if echo "http://www.google.com/test/link.php" | grep -q '(https?|ftp|file)://[-A-Z0-9\+&@#/%?=~_|!:,.;]*[-A-Z0-9\+&@#/%=~_|]'; then
echo "Link valid"
else
echo "Link not valid"
fi
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为grep -q不起作用......
编辑,好吧我刚刚意识到grep有一个"扩展正则表达式"(-E)选项,似乎可以使它工作.但如果有人有更好/更快的方式,我仍然会喜欢这里.
我正在编写一个if语句,通过执行以下操作来检查文件是否可读且存在:
if [[ -r "$upFN" && -f "$upFN" ]]; then
....
fi
Run Code Online (Sandbox Code Playgroud)
然后我想,乖乖你可以把它缩小,可能是这样的:
if [[ -r -f "$upFN" ]]; then
....
fi
Run Code Online (Sandbox Code Playgroud)
但这不起作用,它返回错误:
./ftp.sh: line 72: syntax error in conditional expression
./ftp.sh: line 72: syntax error near `"$upFN"'
./ftp.sh: line 72: `if [[ -r -f "$upFN" ]]; then'
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用shell脚本编译nginx之类的东西时自动执行的过程.(我不想用apt-get)
目前我有这个:
wget http://nginx.org/download/nginx-1.0.0.tar.gz
tar xf nginx-1.0.0.tar.gz
Run Code Online (Sandbox Code Playgroud)
但接下来我需要找出它所提取的目录名称,以便我可以启动configure脚本.