【发布时间】:2020-05-06 22:01:12
【问题描述】:
我需要搜索file1中的每个字符串,然后用字符串替换file2中的那个字符串
文件1
node1
node2
文件2
node1
node2
node3
node4
cat ~/backup/file1.log | xargs -l1 -- sh -c 'sed -i "s/$1/done/g" ~/backup/file2.log' -- > ~/backup/file3.log
预期输出 文件3
done
done
node3
node4
实际输出
prints nothing in file3
【问题讨论】:
-
不鼓励 xargs+sh+sed 解决方案(并且不确定它是否会工作),但使用
-i选项会将任何更改写回~/backup/file2.log,因此 file3 将为空..检查file2 内容 -
你说得对,我剥离了 i 并定向到文件,然后它被保存了。你能发布这个答案,我会标记它。因为下面的答案可能也很好,但我需要理解然后标记它。