2

次のファイルがあります。

  blabla sometinh#LULWUT-12342"asa
  haha"LULWUT-9635bgh
  haha'LULWUT-3679//stuff

パターン LULWUT- は、常に 4 から 5 の数列の前に置かれます。数字のパターンを取得するにはどうすればよいですか?

住居の例では、

blabla sometinh#LULWUT-12342"asa > LULWUT-12342
haha"LULWUT-9635bgh              > LULWUT-9635
haha'LULWUT-3679//stuff          > LULWUT-3679
4

5 に答える 5

7
grep -o 'LULWUT-[0-9][0-9]*' file

非標準の -o 拡張子を使用して grep します (ただし、Mac OS、GNU、および BSD システムでは使用できます)。

于 2013-08-15T17:29:24.500 に答える
2

これは bash のみのソリューションです。

shopt -s extglob # needed for the %%*() pattern below

while read line
do
    line_without_prefix="${line##*LULWUT}"    # remove longest prefix until LULWUT
    line_without_suffix="${line_without_prefix%%*([^0-9])}"   # remove longest non-digit suffix
    echo "LULWUT$line_without_suffix"
done

shopt -u extglob # undo, if extglob is not needed
于 2013-08-15T18:11:50.197 に答える
2

LULWUT- の後に 4 桁またはファイル桁のパターンが続く場合にのみ一致させるには、次のようにします。

grep -o 'LULWUT-[0-9]\{4\}[0-9]\?' file
于 2013-08-15T17:34:19.137 に答える