我有一个调用shell脚本的Makefiel。在该shell脚本中,我有以下sed命令:
sed -e '/.section\t.text/{' -e 'r anotherfile.s' -e 'd' -e '}' input.s > output.s
哪个不起作用。 当我直接将它运行到终端时它工作正常。 我想搜索一行" .section .text"在文件中,并将其替换为另一个文件。 这有什么不对?
.section .data
.addressing Word
_A:
.data.32 0
.section .text
.addressing Word
_main:
LW %GPR27, _C(%GPR0)
NOP
.addr_space 32 ; address space is 2^32
.addressing Byte ; byte addressing (default)
.bits_per_byte 8 ; 1 byte consists of 8 bit (default)
.endian Big ; Big endian (default)
.section .text
.org 0x00000000
.section .data
.addressing Word
_A:
.data.32 0
.addr_space 32 ; address space is 2^32
.addressing Byte ; byte addressing (default)
.bits_per_byte 8 ; 1 byte consists of 8 bit (default)
.endian Big ; Big endian (default)
.section .text
.org 0x00000000
.addressing Word
_main:
LW %GPR27, _C(%GPR0)
NOP
答案 0 :(得分:1)
sed用于执行s / old / new,完全是。这不是你正在做的事情所以你不应该使用sed而不是尝试调试你不应该做的事情,只需使用awk:
awk '
NR==FNR { rep = (rep=="" ? "" : rep ORS) $0; next }
/\.section\t\.text/ { $0 = rep }
{ print }
' anotherfile.s input.s > output.s