Sed 从.txt文件中读取数字并替换.tex文件中的字符串
我有一个包含以下内容的文本文件 aaaa=1000 我想用我从文本文件中得到的1000替换LaTeX文件中的bbbb 我尝试了以下代码,但没有工作 set motor_loc=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
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.txtset motor\u loc=grep-I'aaaa'motor.txt | awk'{print$2}'
中读取值,我不知道您是否试图在其中添加反勾号。注释中的标记很笨拙。既然代码是由注释中的反勾号中的附件标记的,那么如何在StackOverflow上的注释中的代码中放置反勾号呢?我在回答中添加了反勾号。我想我可以用反勾号解决这个问题。再次感谢您的帮助。:)我开始怀疑回跳是否太老派了。所有的酷孩子似乎都在使用FOO=$(ls*.txt)
,也许我错过了一些微妙的区别或优势。我可能会首先考虑使用backticks,因为在perl中也有类似的用法。