【发布时间】:2019-03-24 14:18:49
【问题描述】:
我正在从一个文件中检索一个部分,并想用这个多行数据替换另一个文件中的一行。目前我正在输出到一个文件,但更喜欢使用一个变量。
例如
R 0x00007d04 0x70040000
[OVERWRITE_1]
C "- Starting Execution"
变成:
R 0x00007d04 0x70040000
W 0x00001118 0x0d1f4e3a
W 0x0000111c 0xa3795ac8
W 0x00001120 0xc50e69d5
C "- Starting Execution"
这是我所拥有的:
START="R 0x00007fd0 0x00000000 # CSR:014 (CSRCID-OPT2)"
END="W 0x00007f80"
FILE=file.txt
#Retrieve text between sections above to variable
OUTPUT=$(sed -n "/^$START$/,/$END/ { /^$START$/d ; /$END/d ; /^$/d ; p }"
$FILE)
echo "$OUTPUT" > tmp.txt
#This line currently appends after [OVERWRITE_1]
sed '/\[OVERWRITE_1\]/r tmp.txt' test.asm
哪个输出这个:
R 0x00007d04 0x70040000
[OVERWRITE_1]
W 0x00001118 0x0d1f4e3a
W 0x0000111c 0xa3795ac8
W 0x00001120 0xc50e69d5
C "- Starting Execution"
我知道此时我可以删除该行,但我觉得其他人可能也想知道这一点,我还没有找到好的解决方案。
【问题讨论】:
标签: linux bash sed text-processing