0

引用されたテキストをファイルからシェル変数に分離するにはどうすればよいですか?
また: で始まる行を無視するにはどうすればよい'#'ですか?

テキストファイルがあるとしましょう

8723「フルネーム」「詳細データはこちら」
#5002 「別の名前」「bla bla bla」
7129 "single" ブラブラブラ
3910 noquote "bla bla bla"

実行するスクリプトを書きたい

#!/bin/sh
myscript <KEY> "<FULL NAME>" "<MORE DATA>"

テキストファイルの各行。
簡単にするために、テキスト ファイル内の FULLNAME と MOREDATA は、1 つの単語で構成されている場合でも、常に引用符で囲まれていると想定できます。


シンプルにやってみた

#!/bin/sh
while read key name extra
do
    echo "myscript $key \"$name\" -- \"$extra\""
    #myscript $key "$name" "$extra"
done < list.txt

ただし、引用符内の値を単一のシェル変数にグループ化することはありません。
出力は

myscript 8723 ""full" -- "name" "more data here""
myscript #5002 ""別の" -- "名前" "bla bla bla""
myscript 7129 ""single"" -- "blablabla"
myscript 3910 "noquote" -- ""bla bla bla""

代わりに、私は取得したい

myscript 8723 "full name" -- "詳細データはこちら"
myscript 7129 "single" -- "blablabla"
myscript 3910 "noquote" -- "bla bla bla"

もちろんmyscript、元のテキスト ファイルのすべての行に追加して、そのファイルをスクリプトにしたり、それCを行うプログラムを作成したりできます...

4

2 に答える 2

1
#!/bin/sh
while read key name extra
do
    eval myscript $key $name $extra
done <(grep -v "^#" list.txt)
于 2011-05-20T11:51:13.687 に答える
1
sed -e '/^[^#]/s/^/myscript /' list.txt

編集:実行するには:

sed -e '/^[^#]/s/^/myscript /' list.txt | bash
于 2011-05-20T10:58:40.453 に答える