0

私は次のような入力があります:

[03/Jun/applications/somejunk/morejunk/ 200

そして、sed + regexを使用して、次の形式で抽出します。

03/Jun 200

これが私が試している正規表現ですが、必要なものを抽出する方法がわかりません。

\([0-9]{2}/[a-zA-Z]{3}/\).* \([0-9]{3}\)

どんな助けでも素晴らしいでしょう。これが私のテストコードです:

$ echo "[03/Jun/applications/somejunk/morejunk/ 200" | sed 's,\\([0-9]{2}/[a-zA-Z]{3}/\\).* \\([0-9]{3}\\),\1 \2,g'
4

2 に答える 2

1

これは動作します

sed 's;\[\([0-9]\{2\}/[a-zA-Z]\{3\}\)[^ ]*\(.*\);\1\2;'

$ echo "[03/Jun/applications/somejunk/morejunk/ 200" | sed 's;\[\([0-9]\{2\}/[a-zA-Z]\{3\}\)[^ ]*\(.*\);\1\2;'
03/Jun 200

2 桁の数字[0-9]\{2\}
に一致 単一のスラッシュ に 一致/
3 文字に一致[a-zA-Z]\{3\}
それらをグループ化する\1-- つまり、括弧 で囲む
[^ ]*
\2
\1\2
\2

于 2012-06-12T16:56:05.143 に答える
0

次のことを試してください。

sed 's,.\([0-9]\{2\}/[a-zA-Z]\{3\}\)/.* \([0-9]\{3\}\),\1 \2,'

例:

$ echo "[03/Jun/applications/somejunk/morejunk/ 200" | sed 's,.\([0-9]\{2\}/[a-zA-Z]\{3\}\)/.* \([0-9]\{3\}\),\1 \2,'
03/Jun 200
于 2012-06-12T17:00:18.840 に答える