2

script.sh のようなファイルに式のリストがあります

    1  name1  Pending    flag0
    2  name2  Completed  flag1
    3  name3  Completed  flag-

等。、

「1」と「保留中」の間の特定のステータス(つまりname1)をgrepしたいと思います。

このコマンドで試しました

    var="1"

    cat script.sh |sed -n "s/^${var}\(.*\)Pending.*$/\1/gp"

これは何も返しません。

4

4 に答える 4

2

を使用して行う方法です。grep -Po '(?<=1).*(?=Pending)' file

$ cat file
    1  name1  Pending    flag0
    2  name2  Completed  flag1
    3  name3  Completed  flag-

$ grep -Po '(?<=1).*(?=Pending)' file
  name1  

ここで1は、 aの後に単語 の前にある一致のみを表示していますPending

注: これは正の先読みと後読みを使用しています。

于 2012-12-11T16:04:42.540 に答える
0

ソリューションはどうですか?

awk '{for (i=1; i<=NF; i++) {if ($i == "Pending") {print $(i-1)}}}' input_file
于 2012-12-11T00:34:10.650 に答える
0
    sed -n 's/^1\(.*\)Pending.*$/\1/gp'

先頭に余分なスラッシュがあります

于 2012-12-10T23:52:51.220 に答える
0

ソリューションに必要な変更はわずかです。

var="1"

cat script.sh | sed -n "/^${var}.*Pending/{s/^${var}\(.*\)Pending.*$/\1/;p;}"
于 2012-12-11T15:56:46.740 に答える