小编Den*_*uzé的帖子

Mac上的Makefile自动完成功能

Makefile的目标在Linux上完成,但是AFAICS,而不是Mac OS(10.8.5).

是否可以使用此操作系统完成工作?

macos makefile autocomplete

12
推荐指数
4
解决办法
2391
查看次数

如何用可能的换行符替换成对的令牌?

假设我有一个文件test.txt,包含:

$foobar$

$
foobar
$

$
foobar$

$foobar
$

$
foo
bar
$

$
foo
bar$

$foo
bar
$
Run Code Online (Sandbox Code Playgroud)

我希望每一对$...$都被替换\(...\),...可能包含新的线条.编辑:更确切地说,我希望以下替换:

\(foobar\)

\(
foobar
\)

\(
foobar\)

\(foobar
\)

\(
foo
bar
\)

\(
foo
bar\)

\(foo
bar
\)
Run Code Online (Sandbox Code Playgroud)

以下sed说明:

sed -e 's/\$\([^]]*\)\$/\\(\1\\)/g' test.txt
Run Code Online (Sandbox Code Playgroud)

只有在没有新线的情况下才能完成工作.

另一种可能性是使用两遍:

  1. 第一个替换$为两个中的一个\(
  2. 第二个替换所有剩余$\)

但我不知道怎么说"两个中的一个".

regex perl awk sed tr

1
推荐指数
1
解决办法
55
查看次数

如何在makefile中逃避双倍美元?

考虑一个包含(仅)通过以下方式获得的3个文件的目录:

echo "foobar" > test1.txt
echo "\$foobar" > test2.txt
echo "\$\$foobar" > test3.txt
Run Code Online (Sandbox Code Playgroud)

(并且因此分别含有foobar,$foobar,$$foobar).

grep指令:

grep -l -r --include "*.txt" "\\$\\$" .
Run Code Online (Sandbox Code Playgroud)

过滤包含双倍美元的文件(实际上是唯一文件):

$ grep -l -r --include "*.txt" "\\$\\$" .
./test3.txt
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.现在,该指令在makefile中失败,例如:

doubledollars:
    echo "Here are files containing double dollars:";\
    grep -l -r --include "*.txt" "\\$\\$" . ;\
    printf "\n";\
Run Code Online (Sandbox Code Playgroud)

导致错误:

$ make doubledollars
echo "Here are files containing double dollars:";\
grep -l -r --include "*.txt" "\\\ . ;\
printf "\n";\ …
Run Code Online (Sandbox Code Playgroud)

grep makefile escaping dollar-sign

0
推荐指数
1
解决办法
1323
查看次数

标签 统计

makefile ×2

autocomplete ×1

awk ×1

dollar-sign ×1

escaping ×1

grep ×1

macos ×1

perl ×1

regex ×1

sed ×1

tr ×1