Как удалить последнее слово из каждой строки с помощью AWK или CUT

Просто сделайте это после установки:

  1. Установите OpenSUSE без домашнего раздела. И по возможности без пользователей кроме root.
  2. После установки отредактируйте /etc/fstab, чтобы смонтировать /dev/sdb1в /home.
  3. Установите новый /home. Бывший:mount /home
  4. Получите идентификаторы пользователей (Uid )и идентификаторы групп (Gid )пользователя (s ), для которого у вас есть домашние каталоги. Экс:stat /home/someuser
  5. Создайте этих пользователей (с )с теми же Uid и Gid, чтобы у них был доступ к файлам.

Вот именно.

-2
09.01.2020, 19:23
4 ответа

команда

awk -F "/" 'OFS="/"{$NF="";print $0}' filename| sed "s/\/$//g"

выход

ACRBAMIDKC124,/Program Files (x86)/BigFix Enterprise/BES Client/__GTS/jre/bin
ACRBAMIDKC124,/Program Files/Java/jre6/bin
ACRBAMIDKC125,/Program Files/Tivoli/TSM/baclient/jvm80535/jre/bin
1
28.01.2020, 05:14

Выполнено методом Python

#!/usr/bin/python
import re
y=re.compile(r'/[a-z]*\.[a-z]*$')
k=open('i.txt','r')
for i in k:
    print re.sub(y,"",i).strip()

выход

ACRBAMIDKC124,/Program Files (x86)/BigFix Enterprise/BES Client/__GTS/jre/bin
ACRBAMIDKC124,/Program Files/Java/jre6/bin
ACRBAMIDKC125,/Program Files/Tivoli/TSM/baclient/jvm80535/jre/bin
0
28.01.2020, 05:14

Вы можете попробовать что-то вроде:

awk -F\/ 'BEGIN {OFS="/"} {$NF=""} 1' input_file

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

awk -F\/ 'BEGIN {OFS="/"} {NF-=1} 1'  input_file
2
28.01.2020, 05:14
$ sed 's,/[^/]*$,,' file
ACRBAMIDKC124,/Program Files (x86)/BigFix Enterprise/BES Client/__GTS/jre/bin
ACRBAMIDKC124,/Program Files/Java/jre6/bin
ACRBAMIDKC125,/Program Files/Tivoli/TSM/baclient/jvm80535/jre/bin

Это использует sedдля удаления всего после последнего символа /в каждой строке.

Регулярное выражение /[^/]*$соответствует косой черте, за которой следует любое количество не-символов косой черты в конце строки, и подстановка удаляет эти (заменяет их ничем ).

То же самое вawk:

awk '{ sub("/[^/]*$", ""); print }' file

Утилиту cutбыло бы неудобно использовать здесь, так как у вас нет фиксированного разделителя, который можно было бы обрезать. Очевидно, вы могли бы обратить каждую строку с помощью revи извлечь из /и далее, а затем снова обратить, но это кажется слишком трудоемким, когда и sed, и awkмогут выполнять одно и то же. та же работа намного чище.

$ rev file | cut -d '/' -f 2- | rev
ACRBAMIDKC124,/Program Files (x86)/BigFix Enterprise/BES Client/__GTS/jre/bin
ACRBAMIDKC124,/Program Files/Java/jre6/bin
ACRBAMIDKC125,/Program Files/Tivoli/TSM/baclient/jvm80535/jre/bin
3
28.01.2020, 05:14

Теги

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