bash将带有特殊字符和换行符的文本附加到文件的特定行
我试图将代码文本附加到文件中,代码如下所示bash将带有特殊字符和换行符的文本附加到文件的特定行,bash,shell,text-processing,Bash,Shell,Text Processing,我试图将代码文本附加到文件中,代码如下所示 @ReactMethod public void printBarCode(String str, int nType, int nWidthX, int nHeight, int nHriFontType, int nHriFontPosition) { byte[] command = PrinterCommand.getBarCodeCommand(str, nType, nWidthX, nHeight, nHriF
@ReactMethod
public void printBarCode(String str, int nType, int nWidthX, int nHeight,
int nHriFontType, int nHriFontPosition) {
byte[] command = PrinterCommand.getBarCodeCommand(str, nType, nWidthX, nHeight, nHriFontType, nHriFontPosition);
sendDataByte(command);
}
我把它放到一个名为print_config的变量中
我所做的是
sed-i“436i$print\u config”$file
#错误
sed:-e表达式#1,字符25:命令后的额外字符
我在行尾加了一个“\n”,它没有换行,而是
@ReactMethod'n'public void…
您遇到的问题是print\u config
中包含的文本在文件中没有换行。具体而言,您正在尝试多行插入:
@ReactMethod
公共无效打印条形码(字符串str、int nType、int nWidthX、int nHeight、,
int nHriFontType,int nHriFontPosition){
byte[]command=PrinterCommand.getBarCodeCommand(str、nType、nWidthX、nHeight、nHriFontType、nHriFontPosition);
sendDataByte(命令);
}
如果不在每条换行之前加上'\'
字符,则无法执行此操作。从man sed
可以看到“i\text Insert text,其中每个嵌入的换行符前面都有一个反斜杠。”
相反,您最好将上述内容保存到一个临时文件中,然后使用r filename
命令添加从filename读取的文本。在您的情况下,您应该:
sed -i '436r tempfile' file_to_modify
这将把
tempfile
的内容读入file\u以修改第436行的436
中,而不必修改文本以用反斜杠转义每个换行符。如果我有两个配置,我必须生成两个文件吗?这将是最简单的处理方法。否则,每次插入都需要使用sed
两次。一次用于在要插入的文本中用反斜杠转义换行,两次用于实际插入文本。两个临时文件是一种更简单、问题更少的方法。