GNU/Linux >> Znalost Linux >  >> Linux

Může GNU Grep vytisknout vybranou skupinu?

Můžete použít sed pro tohle. Na BSD sed :

echo "foo 'bar'" | sed -E "s/.*'([^']+)'.*/\\1/"

Nebo bez -E možnost:

sed "s/.*'\([^']\+\)'.*/\1/"

Toto nefunguje pro víceřádkový vstup. K tomu potřebujete:

sed -n "s/.*'\([^']\+\)'.*/\1/p"

Zatímco grep nemůže vytvořit výstup pro konkrétní skupinu, můžete použít předběžná a zadní tvrzení k dosažení toho, co chcete:

echo "foo 'bar'" | grep -Po "(?<=')[^']+(?=')"


Můžete použít \K resetujte a zahoďte text shody nalevo spolu s dopřednou položkou, která se do textu shody nepřidává:

$ echo "foo 'bar'" | grep -oP "'\K[^']+(?=')"
bar

Pouze GNU grep.


Linux
  1. Shoda víceřádkového vzoru pomocí Sed, Awk nebo Grep?

  2. Jak zvýraznit slovo ve výstupu „kočka“?

  3. Barvení výstupu ocasu pomocí Sed?

  1. Zachyťte skupiny pomocí Awk nebo Grep?

  2. Jak zastavit sed ukládání do vyrovnávací paměti?

  3. grep:skupinové zachycení

  1. Jak převést výstup z grep do cp?

  2. Jak mohu odfiltrovat jedinečné výsledky z výstupu grep?

  3. Jak mohu seřadit ls podle vlastníka a skupiny?