如何将文件中的引用文本隔离到 shell 变量?
另外:如何忽略以 开头的行'#'
?
假设我有文本文件
8723 "全名" "这里有更多数据" #5002 “另一个名字” “bla bla bla” 7129“单”blablabla 3910 noquote "bla bla bla"
我想编写一个执行的脚本
#!/bin/sh
myscript <KEY> "<FULL NAME>" "<MORE DATA>"
对于文本文件中的每一行。
如果它更容易,您可以假设文本文件中的 FULLNAME 和 MOREDATA 总是用引号引起来,即使它们由单个单词组成。
我尝试了简单的
#!/bin/sh
while read key name extra
do
echo "myscript $key \"$name\" -- \"$extra\""
#myscript $key "$name" "$extra"
done < list.txt
但它不会将引号内的值分组在单个 shell 变量中。
输出是
myscript 8723 ""full" -- "name" "这里有更多数据"" myscript #5002 ""another" -- "name" "bla bla bla"" myscript 7129 ""single"" -- "blablabla" myscript 3910 "noquote" -- ""bla bla bla""
相反,我想获得
myscript 8723 "全名" -- "这里有更多数据" myscript 7129“单”——“blablabla” myscript 3910 "noquote" -- "bla bla bla"
当然,我可以添加myscript
到原始文本文件的每一行,并使该文件成为脚本或编写C
程序来执行此操作...