Как удалить часть строки

[119085] Существует как минимум три формата доставки почты. Поможет узнать, какой из них вы используете.

formail[119515] прочитает почтовый файл и может выводить заголовки из конкретного сообщения через пропуск и общие параметры. Это предполагает, что сообщения были доставлены в известный файл. Если вы хотите архивировать все сообщения, то это будет подходящим инструментом.

procmail[119517] больше подходит для архивирования сообщений по мере их поступления. Его можно легко настроить на отправку копии на другой адрес во время доставки. Существуют стандартные методы, позволяющие избежать блокировки почты и пропустить определенные типы сообщений.[119090].

2
07.10.2014, 21:08
4 ответа
sed 's/ENUM_NAME\.\(.*\)\.toInt()/ENUM_NAME.\1/g' 
-121--146364-

Вы, кажется, хотите изменить все вхождения

TRANF_FIELD.some_enum_value.toInt()

на

TRANF_FIELD.that_enum_value

, оставляя другие перечисления (например, Trang_field.trang_value.toint () ) и другие методы (например, tranf_field.tranf_value.length () )). Это кажется простой:

sed 's/\(TRANF_FIELD\.[A-Za-z0-9_]*\)\.toInt()/\1/'

где

  • [A-ZA-Z0-9 _] * - любое количество буквенно-цифровых символов (включая подчеркивание). Это предназначено для сопоставления любого достоверного значения перечисления. На самом деле [A-ZA-Z _] [A-ZA-Z0-9 _] * будет лучше, Поскольку [A-ZA-Z0-9 _] * может сопоставить пустую строку или одно начало с цифрами.
  • \ ( ... \) Группы название перечисления ( tranf_field ), буквальный период ( \. ), и значение перечисления (от первой пули).
  • \ 1 означает «заменить полную строку, которую вы нашли с первой группой», I.e. Откажитесь от .toint () .
  • Для обработки нескольких вхождений в строке добавьте g (глобальный) после последней косынки.
  • Это не будет обращаться с встроенным пробелом, например, Tranf_Field. Tranf_value . Исправление этого осталось как упражнение.
  • Это не будет справиться с выражениями, которые разбиты на линии; E.G.,

      i = tranf_field
      .Tranf_value.toomt ();
     

    Это сложнее исправить.

1
27.01.2020, 22:22

Спасибо за все ваши помощи. Я добавил -i из одного ответа, включая путь ко всем файлам Java, к тому, что предлагает G-Man, и он работает. Если вы, ребята, находятся на Лонг-Айлере, я куплю тебе пиво. Что спас меня куча времени.

sed -i 's/\(TRANF_FIELD\.[A-Za-z0-9_]*\)\.toInt()/\1/g' 
1
27.01.2020, 22:22

В зависимости от вашей операционной системы, inline (-i) sed может сделать следующее:

sed -i 's:\.toInt():::' имя файла

Где он просто заменит экземпляр ".toInt()" на "" - . избавляется, чтобы не действовать как дикая карта.

Так как вы упоминаете несколько файлов, то вам придется зациклить эту команду, искать все файлы в текущем каталоге и подкаталогах:

find . -тип f -exec sed -i 's:\.toInt():::' {} \;

Однако, это приведет к ошибке, если имена файлов будут содержать пробелы, поэтому мы можем использовать команду xargs для решения этой проблемы, которая поместит кавычки вокруг всех имён файлов:

find . -тип f | xargs -I{} sed -i 's:\.toInt():::' "{}"

Однако, это также выберет и скомпилированные файлы, так что, чтобы избежать их, мы можем использовать полезную возможность в perl, чтобы проигнорировать их:

find . -тип f | perl -nle 'print if -T' | xargs -I{} sed -i 's:\.toInt()::' "{}"

0
27.01.2020, 22:22

Если все входные файлы формируются одинаково, то для простого решения проблемы:

awk '/^ [a-Z ]/{ print $1} 'имя файла

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

-121--210070-

Для этого вам не нужна система.

Я хотел бы знать, кто вошел в систему с тех пор, когда

Используйте , кто

$ who
jimmij   tty7         2014-09-25 01:39 (:0)
jimmij   pts/0        2014-09-25 01:39 (:0)
jimmij   pts/2        2014-09-28 22:14 (:0)

или даже лучше w , чтобы получить дополнительную информацию

$ w
jimmij   tty7      25Sep14 12days  4:09m  5:24  sawfish
jimmij   pts/0     25Sep14 53:43   8.81s 32:32  /usr/bin/python2.7 /usr/lib/python-exec/python2.7/ter
jimmij   pts/2     28Sep14  8days 45.08s  2.45s /bin/zsh

Какие процессы в настоящее время выполняются под его управлением

используйте ps -u user

$ ps -u jimmij
  PID TTY          TIME CMD
  352 ?        00:00:01 systemd
  353 ?        00:00:00 (sd-pam)
  359 ?        00:05:24 sawfish
  372 ?        00:00:00 dbus-launch
  373 ?        00:00:00 dbus-daemon
  375 ?        00:00:16 sawfishpager
  377 ?        00:32:32 terminator
  ...
-121--157770-
sed 's/ENUM_NAME\.\(.*\)\.toInt()/ENUM_NAME.\1/g' 
-1
27.01.2020, 22:22

Теги

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