我有一个非常具体的问题,我想搜索包含第一个单词的行 *文件1中的Contro_Contact,当找到它时,我想用来自anthor file2的另一行替换那两行之后的行,以便参数自动从文件2改变
*CONTROL_CONTACT
$# slsfac rwpnal islchk shlthk penopt thkchg orien enmass
0.100000 0.000 2 1 4 0 1 0
输出可能是
*CONTROL_CONTACT
$# slsfac rwpnal islchk shlthk penopt thkchg orien enmass
0.2340000 0.000 2 1 4 0 1 0
我从另一个文件中更改了一行,所以不是问题。
我将等待专家建议。
答案 0 :(得分:2)
awk 'N != 0 || $0 != "*CONTROL_CONTACT"
N == 0 && $0 =="*CONTROL_CONTACT"{
N = 1; print; getline; print
getline; getline < "file2"; print}' file1
答案 1 :(得分:2)
这可能对您有用:
sed -e '/^\*CONTROL_CONTACT/{n;n;r file2' -e 'd}' file1
或者这个(仅限bash):
sed '/^\*CONTROL_CONTACT/{n;n;r file2'$'\n'';d}' file1
或者如果文件2中有多个CONTROL_CONTACT
和多个参数(仅限GNU sed):
sed -e '/^\*CONTROL_CONTACT/{n;n;R file2' -e 'd}' file1
答案 2 :(得分:1)
$ sed -r "/^\*CONTROL_CONTACT/{n;n;s/^\S*/$(head -1 file2)/p;d}" file1