php - Ubuntu sed 创建重复的行而不是只返回一个替换的行

标签 php bash magento ubuntu sed

我有下面的脚本来提取 Gedit 中当前打开的文件路径。

#!/bin/bash
origPath=$GEDIT_CURRENT_DOCUMENT_URI
if [[ $origPath == *"smb"* ]]
then
    finalPath=`php -f /var/www/html/pathswapcmd.php smb_path=$origPath`;
else
    finalPath=$origPath;
fi
## echo -n $finalPath;
echo -n $finalPath | sed 's/^.*app/app/p' | xclip -sel clip;
exit;

通常我的系统中有 Magento 文件,所以我的路径需要从 app 开始, skin文件夹等。

现在,当我尝试删除 app 之前的所有内容时与 sed它会删除,但它会用垃圾字符分隔三倍的路径,该垃圾字符在 Ubuntu 文件夹管理器的地址栏中无法识别(当然)。

我想要从 sed 中删除重复行的简单而清晰的解决方案命令。

最佳答案

s/pattern/replacement/p默认情况下会在任何操作完成后输出行缓冲区,如果由于p而执行替换,也会再次输出。旗帜。删除 p标志以避免再次打印替换的行,或提供 -n sed 的参数避免打印每一行。

sed -n 's/pattern/replacement/p'  # print only lines where replacement happened

sed 's/pattern/replacement/'      # print all lines, possibly with replacements

关于php - Ubuntu sed 创建重复的行而不是只返回一个替换的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37340207/

相关文章:

bash - 日期:无效日期 ‘19820101+1 months’

linux - Bash ~ 从目录的子目录中的脚本访问可能更改的目录

magento - 在 magento 中以编程方式发送已完成订单的发货电子邮件

php - 如何在 PHP 中包含一个类

php - mysqli bind_param 和受影响的行错误

php-fpm 连接被对等方重置

php - 将 SVG 用于 Wordpress Logo

node.js - Windows 上 npm run 脚本中 shell 脚本的退出状态

jquery - Magento 可配置产品图像缩放问题

php - 洋红色。无法重写地址模型