我有一个只有一行的脚本,但我不能理解它的真正作用:
sed -i '/$$wf_cdc=/c\$$wf_cdc='"$1"'' /Infa_sharedBDE/PARAMS/pf_CREDITO_CDC.cfg它应该代替创建pf_CREDITI_CDC.cfg文件的副本,但是这个命令有什么作用呢?
'/$$wf_cdc=/c\$$wf_cdc='"$1"''什么是$$
发布于 2017-06-08 22:36:13
这里字面上用的是$$。该命令执行以下操作:
'/$$wf_cdc=/是一个行地址:如果一行包含字符串$$wf_cdc=,那么...c\$$wf_cdc='"$1"''也可以写成c $$wf_cdc='"$1"'' (至少在GNU中是这样):它用\$$wf_cdc='"$1"''替换模式空间(当前行)。就我个人而言,我两次都会避开$,以确保它不会被解释为行尾锚点,但有时你会逃脱它。'"$1"''是第一个正确引号的位置参数:结束sed命令的单引号,然后在双引号中插入$1,然后结束单引号字符串的其余部分(在本例中,为空,并且可以在我的opinion).中删除
总而言之,这将在函数或脚本中调用,找到包含$$wf_cdc=的行并将其替换为$$wf_cdc=<parameter>,其中<parameter>将作为第一个参数提供给脚本或函数。
-i标志“就地”替换正在编辑的文件,即制作并修改临时副本,然后将该副本重命名为原始文件的名称。
https://stackoverflow.com/questions/44434268
复制相似问题