0


正規表現についての質問です。
次のコードがあります。

プログラム

#!/bin/sh

temp="/home/user/game/log.txt"
echo $temp | sed -e "s#\(.*\)/.*#\1#"

出力

/ホーム/ユーザー/ゲーム

質問

こいつの正体は――― s#\(.*\)/.*#\1#

私は Web から検索し、いくつかの意味を知っています。たとえば、次のようになります。

s- 代わりの

.- 任意の単語

*- この前の単語は 0 回から無限回繰り返すことができます

しかし、機能は知っていますが、このコードの意味はまだわかりません

4

2 に答える 2

1
 s#\(.*\)/.*#\1
  • s: 置換コマンド
  • #:sコマンドが持つ3 つの部分の区切り文字
  • \(\): 後で参照できるグループ
  • .: 任意の文字
  • /: 文字通りのスラッシュ
  • .*: 任意の文字数
  • \1: 最初のグループを参照

sコマンドには次の3 つの部分があります。

  1. コマンドs自体
  2. グループの定義を含む、何を一致させるか:\(.*\)/.*
  3. 何を出力するか、一致したものの代わりに:\1

したがって、これは最後のすべてを/最初のグループとして取り上げ、 で参照して出力し\1ます。

于 2013-06-07T06:47:30.557 に答える