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文件,因此我的路径只需要从appskin文件夹等开始。

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

我想要从命令中删除重复行的简单明了的解决方案sed

默认情况下,

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

sed -n 's/pattern/replacement/p'  # print only lines where replacement happened
sed 's/pattern/replacement/'      # print all lines, possibly with replacements

相关内容

  • 没有找到相关文章

最新更新