Sed 从.txt文件中读取数字并替换.tex文件中的字符串

Sed 从.txt文件中读取数字并替换.tex文件中的字符串,sed,grep,cygwin,latex,miktex,Sed,Grep,Cygwin,Latex,Miktex,我有一个包含以下内容的文本文件 aaaa=1000 我想用我从文本文件中得到的1000替换LaTeX文件中的bbbb 我尝试了以下代码,但没有工作 set motor_loc=grep-i'aaaa'motor.txt | awk'{print$2}' sed-i's/bbbb/$motor\u loc/”for_pdf.tex>for_pdf.tex.tmp 此时,bbbb更改为$motor_loc 然后,当我试图用下面的行创建pdf时,它给了我一个错误 pdflatex for_pdf.te

我有一个包含以下内容的文本文件 aaaa=1000

我想用我从文本文件中得到的1000替换LaTeX文件中的bbbb

我尝试了以下代码,但没有工作

set motor_loc=
grep-i'aaaa'motor.txt | awk'{print$2}'

sed-i's/bbbb/$motor\u loc/”for_pdf.tex>for_pdf.tex.tmp

此时,bbbb更改为$motor_loc

然后,当我试图用下面的行创建pdf时,它给了我一个错误

pdflatex for_pdf.tex

如何将bbbb改为1000(从文本文件读取的值),而不是$motor_loc或string

仅供参考,我正在使用Cygwin和Miktex,并将尝试在Raspberry Pi 2中运行此代码


提前谢谢。

sed的参数中的单引号可以防止变量被展开,所以请从单引号改为双引号

user@thoth:~$ FOO=ABC
user@thoth:~$ echo $FOO
ABC
user@thoth:~$ echo "$FOO"
ABC
user@thoth:~$ echo '$FOO'
$FOO
另一种也很有用的引号是反勾号,它将命令的输出更改为字符串

user@thoth:~$ FOO=`ls *.txt`
user@thoth:~$ echo $FOO
soap.txt
编辑:现在bash脚本中似乎更常用另一种形式的命令替换

 FOO=$(ls *.txt)

例如,在命令中处理反斜杠的方式上存在明显的差异

谢谢!事实上,除了我发现了另一个问题。。。当我手动键入
motor\u loc=1000
时,它就工作了,但我意识到下面的行并没有从motor.txt
set motor\u loc=grep-I'aaaa'motor.txt | awk'{print$2}'
中读取值,我不知道您是否试图在其中添加反勾号。注释中的标记很笨拙。既然代码是由注释中的反勾号中的附件标记的,那么如何在StackOverflow上的注释中的代码中放置反勾号呢?我在回答中添加了反勾号。我想我可以用反勾号解决这个问题。再次感谢您的帮助。:)我开始怀疑回跳是否太老派了。所有的酷孩子似乎都在使用
FOO=$(ls*.txt)
,也许我错过了一些微妙的区别或优势。我可能会首先考虑使用backticks,因为在perl中也有类似的用法。