linux - 在 LINUX/BASH 中另一个文件的特定行号处插入文件内容
问题描述
我有两个以下文件 - 'tempFile' 和 'File1'
临时文件
tempFile 01
tempFile 02
tempFile 03
tempFile 03
文件 1
File1
@type ABCDF #---Insert 'tempfile' content below First occurrence '@type ABCDF'
File2
File3
@type ABCDF
File4
@type ABCDF
File5
我尝试使用以下脚本在第一次出现语句“@type ABCD”时将“tempFile”的内容插入另一个文件“File1”
lineNumber=$(grep -n -m 1 '@type ABCD' File1 | awk -F':' '{print $1}' | head -1)
sed -i "${lineNumber}r tempFile" File1
但是,上面的脚本多次在 File1 中插入 tempFile 的内容,如下所述请帮我在 File1 中插入 tempFile 的内容一次/脚本生成以下输出
File1
@type ABCDF #---Insert 'tempfile' content below First occurrence '@type ABCDF'
tempFile 01
tempFile 02
tempFile 03
tempFile 03
tempFile 01
tempFile 02
tempFile 03
tempFile 03
tempFile 01
tempFile 02
tempFile 03
tempFile 03
tempFile 01
tempFile 02
tempFile 03
tempFile 03
tempFile 01
tempFile 02
tempFile 03
tempFile 03
tempFile 01
tempFile 02
tempFile 03
tempFile 03
File2
File3
@type ABCDF
File4
@type ABCDF
File5
脚本的预期输出
File1
@type ABCDF #---Insert 'tempfile' content below First occurrence '@type ABCDF'
tempFile 01
tempFile 02
tempFile 03
tempFile 03
File2
File3
@type ABCDF
File4
@type ABCDF
File5
解决方案
这对我有用:
touch result #Intermediate file
lineNumber=$(grep -n -m 1 '@type ABCD' File1 | awk -F':' '{print $1}' | head -1)
head -n $lineNumber File1 >> result #First two lines
cat tempfile >> result #Append your tempfile
sed -n "3,`wc -l File1 | awk ' { print $1}'`p" File1 >> result #Rest of File1
mv result File1 #Rename it to File1
推荐阅读
- python - 我的 __init__ 中的 for 循环没有按预期工作
- node.js - 在单独的文件中续集关联
- python - 是否可以从模块中导入变量以与 Selenium 一起使用?
- python-2.7 - 如何拆分代码以便在两台计算机上运行
- apache-flink - Apache Flink Tumbling Window 延迟结果
- javascript - Styled-components:如何引用相同的组件但具有不同的道具?
- java - 如何在水平标签滚动上制作固定横幅?
- wordpress - wordpress 多语言 slug 翻译
- machine-learning - IBM Watson NLC - 使用超过 20,000 个文本示例进行培训?
- django - 根据管理站点中的用户输入批量更新模型字段