sed错误地去除了反斜杠

时间:2019-03-07 02:29:00

标签: c sed

find . | sed -e "s/[^-][^\/]*\// |/g" -e "s/|\([^ ]\)/|-\1/"

打印出我想要的当前目录的目录结构。示例:

.
 |-one
 |-two
 | |-two_2
 | |-two_1
 |-test_file

但是,当我将其放入别名文件(包含所有别名的文件)时,就像这样:

alias ls_tmp="cd /tmp; find . | sed -e \"s/[^-][^\\/]*\\// |/g\" -e \"s/|\\([^ ]\\)/|-\\1/\""

,正在加载以下sed命令:

// load alias
  sprintf(buf, "cat %s|grep \"^alias \"| sed -e \"s/=/ /\" | sed -e \"s/\\\\\\\\//g\"", FILE_NAME);
  f = popen(buf, "r");
  if (f == NULL) {
    fprintf(stderr, "error: failed to init alias commands.\n");
    return;
  }

,实际上执行的命令实际上是

cd /tmp; find . | sed -e "s/[^-][^/]*// |/g" -e "s/|([^ ])/|-1/"

请注意,尽管我使用//来转义了反斜杠,但所有反斜杠均已删除。

我如何进行这项工作?我对

感到困惑
sed -e \"s/=/ /\" | sed -e \"s/\\\\\\\\//g

确实。也许与\\\\有关?

0 个答案:

没有答案