Я использую команду 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
Простой и экономичный метод для достижения этой цели:
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
Вы можете попробовать эту команду (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
Другой подход: получить последний psinfo ....
с помощью grep:
grep -Po '.*\Kpsinfo.*'