0

複数の行を含む変数の 2 つの文字列の間の内容を取得しました。各行が数字で始まるかどうかを確認したいのですが、そうであればカウンターをインクリメントし、その数字の後と次の数字の前に文字列が必要です。以下を含む変数 $line があるとします。

1. Create
    create a volume.
2. destroy 
      destroy a volume.

等々。var1 で 10 回の操作、var2 で数値の後に文字列、var3 で作成、破棄 (など) の後にテキストを取得したいと考えています。シェルスクリプトでの扱い方。前もって感謝します

コードの追加:

line=$(sed -n '/Description/,/properties/p'    readme.txt)
echo "$line"



sed -n -e '/^[0-9]/{s/\([0-9]*\).*/\1/;h;n;s/^ *//;H;x;s/\n/ /p;d;}' <<< "$line"
operations=0
while read -r n str ;
do
    let operations+=1
    printf '%d, %d, %s\n' "$operations" "$n" "$str"
done < <(sed -n -e '/^[0-9]/{s/\([0-9]*\).*/\1/;h;n;s/^ *//;H;x;s/\n/ /;p;d;}'  <<<"$line")


printf "Opertions = %d\n' "$operations"
done

$line には、必要な操作を実行する必要がある説明とプロパティの間のコンテンツが含まれています。

4

1 に答える 1

0

私があなたを正しく理解しているなら、あなたはこのようなものが欲しいです(私はあなたがbash以下のいくつかのものを使用していると推測していることに注意してください。そうでない場合は多少変更する必要があります).

まず、箇条書きの数字と次の行の文字列を取得します。少しsedはできます。

sed -n -e '/^[0-9]/{s/\([0-9]*\).*/\1/;h;n;s/^ *//;H;x;s/\n/ /p;d;}' <<<"$line"

次に、行を読み取り、行を数え、変数に格納する必要があります。

operations=0
while read -r n str ; do
    let operations+=1
    printf '%d, %d, %s\n' "$operations" "$n" "$str"
done < <(sed -n -e '/^[0-9]/{s/\([0-9]*\).*/\1/;h;n;s/^ *//;H;x;s/\n/ /;p;d;}' <<<"$line")

printf 'Opertions = %d\n' "$operations"

各ループの間nは、黒丸の番号でありstr、次の行の文字列です。

于 2012-06-26T11:27:20.260 に答える