二重引用符間の文字列の抽出

二重引用符間の文字列の抽出

引用符を使用して文字列を抽出する必要があります。私の文字列は次のとおりです。

"abcd efgh" "ijkl mnop" "qrst uvwxyz"

ijkl mnopsedorコマンドを使用してgrep2番目の二重引用符()間の文字列を取得するのに役立ちますか?

つまり、最初の文字列を引用符で囲むと最初の文字列が必要になり、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"

おすすめ記事