引用符を使用して文字列を抽出する必要があります。私の文字列は次のとおりです。
"abcd efgh" "ijkl mnop" "qrst uvwxyz"
ijkl mnop
sed
orコマンドを使用してgrep
2番目の二重引用符()間の文字列を取得するのに役立ちますか?
つまり、最初の文字列を引用符で囲むと最初の文字列が必要になり、2番目の文字列を言うと2番目の二重引用符を指定し、二重引用符の間に3番目のA文字列を指定する必要があります。
ベストアンサー1
文字列をどのように入力したいのか分かりません。これはすでに達成しようとしている目標を達成していますが、文字列の入力方法に応じて変更する必要があるかもしれません。
aa() { echo $3 ; } ; aa "abcd efgh" "ijkl mnop" "qrst uvwxyz"
編集する:したがって、変数にある場合(引用符で定義する必要があります):
AA="\"abcd efgh\" \"ijkl mnop\" \"qrst uvwxyz\""
echo $AA
それから:
FIRST=`echo $AA| awk -F \" '{print $2}'`
SECOND=`echo $AA| awk -F \" '{print $4}'`
THIRD=`echo $AA| awk -F \" '{print $6}'`
echo $FIRST : $SECOND : $THIRD
Jasonwryanが上で指摘したように。 sedを使いたいと言っていましたが、これは不必要に複雑になりました。
FIRST=`echo $AA| sed 's/^\"\([^\"]*\)\".*/\1/'`
SECOND=`echo $AA| sed 's/^\"[^\"]*\" \"\([^\"]*\)\".*/\1/'`
THIRD=`echo $AA| sed 's/^\"[^\"]*\" \"[^\"]*\" \"\([^\"]*\)\".*/\1/'`
編集2: 実際、sed、awk、Perlはまったく使用できません。 .. 組み込みの「読み取り」機能を使用して bash を使用します (echo はデバッグに使用されます)。
#!/bin/bash
aa() {
echo '$1'="$1"
IFS=\" read aaa FIRST bbb SECOND ccc THIRD ddd <<< "$1"
echo FIRST=$FIRST : SECOND=$SECOND : THIRD=$THIRD
}
AA="\"abcd efgh\" \"ijkl mnop\" \"qrst uvwxyz\""
echo '$AA'="$AA"
aa "$AA"