我有下面的脚本来提取 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/