Измельчение первых 16 символов с помощью SED

Я использую команду SED, чтобы попытаться отключить строки. В настоящее время я пытаюсь получить первые 16 символов для измельчения из текстового файла (строка за строкой)

Примеры строк:

psinfo -s -c psinfo -s -c ALASTAIR-MUNRO psinfo -s -c psinfo -s -c ANDREWATKINSON psinfo -s -c psinfo -s -c ANDY-KAYE psinfo -s -c psinfo -s -c ANDYTURNER psinfo -s -c psinfo -s -c CAD-SPARE2 psinfo -s -c psinfo -s -c CAD-SPARE3 psinfo -s -c psinfo -s -c CADTEMP1 psinfo -s -c psinfo -s -c CARLWALKER psinfo -s -c psinfo -s -c CAROLEGIBBONS psinfo -s -c psinfo -s -c CHRIS-SMITH

Я пытаюсь нарезать первую партию PSinfo -s -c, а затем преобразовать это в отдельный txt

Это то, что у меня есть, которое не работает (ниже). Любые идеи?

BIN\sed -e 's/^\(.\{60\}\).*/\16/' Working\Hostnames3.txt > Working\Hostnames4.txt
1
задан 21 April 2017 в 14:58

6 ответов

Простым и экономичным способом для этого является:

cut -c 16- hostname.txt > altered_hostname.txt

Магический раздел этой простой команды cut находится в этих двух вариантах:

-c, --characters=LIST select only these characters N- from N'th byte, character or field, to end of line
3
ответ дан 18 July 2018 в 14:32

Другой подход: получить последний psinfo .... с grep:

grep -Po '.*\Kpsinfo.*'
0
ответ дан 18 July 2018 в 14:32

Вы можете попробовать эту команду (awk)

awk '{sub(".*" $3 FS,"")}1' Working/Hostnames3.txt > Working/Hostnames4.txt

, чтобы удалить первые три поля из входного файла (по моему мнению, это то, что вам нужно) P.S. Вот пример выполнения вышеприведенного скрипта:

# cat in a b c d aa bb cc dd a1 b1 c1 d1 # awk '{sub(".*" $3 FS,"")}1' in >out # cat out d dd d1
0
ответ дан 18 July 2018 в 14:32

Простым и экономичным способом для этого является:

cut -c 16- hostname.txt > altered_hostname.txt

Магический раздел этой простой команды cut находится в этих двух вариантах:

-c, --characters=LIST select only these characters N- from N'th byte, character or field, to end of line
3
ответ дан 24 July 2018 в 20:25
  • 1
    Будет ли это запускать CUT -16 против всех строк в документе? – Kyle Crowther 21 April 2017 в 16:20
  • 2
    Конечно, будет ... – andrew.46 22 April 2017 в 01:11
  • 3
    (+1): cut -c 17-? – JJoao 24 April 2017 в 19:20
  • 4
    @JJoao Вы бы так подумали? Но тестирование показывает, что 16 - это магическое число. Как ни странно, команда добавляет лишнюю пустую строку в конце серии, которую мне еще не удалось выполнить ... – andrew.46 25 April 2017 в 02:10
  • 5
    @ andrew.46, из представленного примера, PO, вероятно, означает «удаление 15 символов»; В любом случае: cut -c 16- ⇔ «измельчение 15». – JJoao 25 April 2017 в 13:18

Другой подход: получить последний psinfo .... с grep:

grep -Po '.*\Kpsinfo.*'
0
ответ дан 24 July 2018 в 20:25

Вы можете попробовать эту команду (awk)

awk '{sub(".*" $3 FS,"")}1' Working/Hostnames3.txt > Working/Hostnames4.txt

, чтобы удалить первые три поля из входного файла (по моему мнению, это то, что вам нужно) P.S. Вот пример выполнения вышеприведенного скрипта:

# cat in a b c d aa bb cc dd a1 b1 c1 d1 # awk '{sub(".*" $3 FS,"")}1' in >out # cat out d dd d1
0
ответ дан 24 July 2018 в 20:25
  • 1
    Мне нужно, чтобы удалить первые 15, могу ли я просто применить от 3 до 15 долларов США, считая его тем же основным? – Kyle Crowther 21 April 2017 в 15:32
  • 2
    Правильно, @KyleCrowther. Но не забывайте, что я говорю (и awk работать с) полями, а не персонажами. Пожалуйста, выполните команду выше и проверьте результат – Romeo Ninov 21 April 2017 в 15:34
  • 3
    Не нравится. Хост-имя 4 выходного файла пуст. – Kyle Crowther 21 April 2017 в 15:36
  • 4
    Мне просто нужно обрезать каждую строку на 15 символов. Его запутывает, почему его дублирование начала в любом случае является командой im, выполняемой перед командой = BIN \ sed '' # '\\ #' psinfo -s -c #g 'Working \ Hostnames2.txt & gt; Рабочая \ Hostnames3.txt – Kyle Crowther 21 April 2017 в 15:36
  • 5
    Что такое разделитель в вашем входном файле? – Romeo Ninov 21 April 2017 в 15:37

Другие вопросы по тегам:

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