Я хочу отобразить все строки в inventory файлов, которые содержат слово Straw перед пробелом.

Файл данных inventory содержит:

Strawberry Jam,300,4
Raspberry Jam,1216,7
Blueberry Jam,96,195
Strawberry Compote,49,621
Raspberry Compote,1937,624
Blueberry compote,200,625
Frozen Strawberries,130,1941
Straw Hats,16,2047

Я попробовал grep ".Straw" inventory .

5 ответов5

2

Может быть с чем-то вроде этого:

grep -iE '(^|[^a-z])straw ' inventory

Строки, начинающиеся с "соломинки", и строки, соответствующие не алфавитному символу, за которым следует "соломка" (может также потребоваться совпадение чисел, ... зависит от вашего файла инвентаря).


Обновление: если вам нужно ваше место перед словом "солома", то:

grep -i ' straw' inventory
grep -iE ' straw( |$)' inventory
1

Кажется, ваша командная строка в порядке, возможно, после "Straw" нет пробела.

Пример: я создал файл со строкой с пробелом и другой со вкладкой сразу после "Соломы".

$ cat inventory
00 Strawberry
12Straw space
21Straw tab
cba Straw

Давайте выполним вашу команду:

$ grep -i 'straw ' inventory
12Straw space

Теперь давайте выполним то же самое, но с классами символов:

$ grep -i 'straw[[:space:]]' inventory
12Straw space
21Straw tab
0

У меня была такая же проблема, поэтому я решил поделиться ею с другими. Все они верны.

  1. egrep "Straw[[:space:]]" inventory
  2. grep "Straw[ ]" inventory
  3. grep "Straw " inventory

Но только последний работает для этого назначения Linux.

0

в основном я бы пойти с другими и сказать

cat inventory | grep straw

для меня это должно быть решением. Даже если это может быть «жестокое обращение с кошкой».

0

Труба кота на grep? cat inventory | grep "^straw\ "

Также может быть достигнуто с помощью sed и printf

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .