Как я могу удалить текст из строки после определенного символа с awk

Вот некоторые за и против, если Вы используете 64-разрядный.

Профессионалы:

  • собственная система команд ЦП,
  • некоторые целочисленные счетчики в Linux будут 64-разрядным размером, как те, которых Вы видите на/proc/net/dev, которые перезапускают от 0, когда достижение макс. оценивает (довольно рано при использовании 32-разрядный),
  • некоторые программы будут работать значительно быстрее, если они используют 64-разрядное вычисление (обычно, сжатие и crypting среди тех).

Недостатки:

  • двоичные файлы программы обычно немного больше для хранения на диске,
  • запущение программ может использовать немного больше RAM.

Если бы Ваш не использование встроенной системы, ни имеют особые потребности, я пошел бы для 64-разрядного. Afterall, 32-разрядный, становится старым теперь, и 64-разрядный будущее/подарок...

10
28.02.2014, 06:00
4 ответа

А также просто вырезать ..

cut -d\; -f1 file
4
27.01.2020, 19:59

Есть два общих подхода.

  1. Установите разделитель полей awk на этот символ. Затем вы можете получить нужные вам части как $1:

    $ echo "Сегодня было облачно; вчера тоже" | awk -F';' '{print $1}'
    Сегодня было пасмурно
    
  2. Используйте gsub() для замены на пустую строку:

    $ echo "Сегодня было облачно; вчера тоже" | awk '{sub(/;.*/,""); print}'
    Сегодня было пасмурно
    

Итак, для вашего примера:

$ awk -F';' '{print $1}' file
Jenny,Sarah,John

Henry,Frank

Aaron,Kathryn,Caitlin,Harris
17
27.01.2020, 19:59

Вот ответ с помощью sed - поскольку вы не делаете никакой обработки полей, awk, вероятно, излишен.

sed 's/;.*//'
4
27.01.2020, 19:59

Иногда вам может потребоваться заменить все символы после определенного слова другой строкой. Например:

original_string = "abc blabla foo bar" и вы хотите заменить слова после blabla на 'hello world'

echo $original_string | sed -E 's/(.+ blabla) .+/\1 hello world/'
0
27.01.2020, 19:59

Теги

Похожие вопросы