任何人都可以帮助我理解Linux中的以下命令。
sed -i file.c -e "s/ __attribute__ ((__unused__))$$/# ifndef __cplusplus\n __attribute__ ((__unused__));\n# endif/"
答案 0 :(得分:1)
它在file.c
中的# ifndef __cplusplus
附近添加了# endif
和__attribute__ ((__unused__));
答案 1 :(得分:1)
正在file.c
进行内部搜索和替换,寻找
__attribute__ (__unused__)
在一行的末尾,并用
替换任何出现的情况# ifndef __cplusplus\n __attribute__ (__unused__);\nendif
适用于:
# ifndef __cplusplus
__attribute__ (__unused__)
# endif
加倍括号和$符号将“逃避”shell中的那些字符。
答案 2 :(得分:1)
正如Greg在评论中所说,$$
将扩展到shell的PID,这在上下文中没有意义。如果它是单个美元符号,或者不存在,则该命令可以缩短为:
sed -i file.c -e "s/ __attribute__ ((__unused__))$/# ifndef __cplusplus\n&;\n# endif/"
因为&
提出了第一对分隔符(本例中的斜杠)之间匹配的内容。单个美元符号仅在字符串位于该行的末尾时才会进行匹配。