
INPUT="TEST: www.google.com TEST2: 123444 TEST3 Id: ABCD1234 TEST.txt"
私の予想結果はABCD1234
頑張った
OUTPUT=`echo $INPUT | sed 's/^.*TEST3 Id://' | sed 's/\[space].*//'`
これを出力として得るABCD1234 TEST.txt
答え1
この試み:
echo "$INPUT" | sed 's/.*TEST3 Id: \([^ ]*\).*/\1/'
これは\( \)
コピーされる正規表現部分を分離するのに便利な設定です\1
。したがって、末尾の空白なしで最大の文字列のみを再生しますTEST3 Id:
。
答え2
キャプチャグループを使用する1つの方法は次のとおりです。
sed 's/.*TEST3 Id: \(.*\) .*/\1/'
テスト
echo "TEST: www.google.com TEST2: 123444 TEST3 Id: ABCD1234 TEST.txt" | sed 's/.*TEST3 Id: \(.*\) .*/\1/'
ABCD1234
答え3
あなたはsedに制限されていると言わなかった...
echo "$INPUT" | awk '{print $7}'
答え4
パラメータ拡張。
INPUT="TEST: www.google.com TEST2: 123444 TEST3 Id: ABCD1234 TEST.txt"
INPUT="${INPUT% TEST*}"
echo "${INPUT##* }"
コマンドの置換にはここで文字列と配列を使用します。
INPUT="TEST: www.google.com TEST2: 123444 TEST3 Id: ABCD1234 TEST.txt"
OUTPUT=$(read -ra var <<< "$INPUT"; echo "${var[-2]}")
echo "$OUTPUT"
こんな。
INPUT="TEST: www.google.com TEST2: 123444 TEST3 Id: ABCD1234 TEST.txt"
echo "$INPUT" | awk '{print $(NF-1)}'
それともsedでやったことをしてください
INPUT=$(echo "TEST: www.google.com TEST2: 123444 TEST3 Id: ABCD1234 TEST.txt" | awk '{print $(NF-1)}')