Sed script
Модераторы: /dev/random, Модераторы разделов
-
- Сообщения: 9
Sed script
Великие Линуксойды, помогите разобраться с задачей...
Задание:
Узнайте то, что содержится в системном файле/etc/passwd на marian сервере.
Conatenate этот файл и переадресовывают вывод к текстовому файлу, названному myPasswd.txt. Используйте
следующая команда, чтобы узнать, что означают различные поля: man -s 4 passwd
Напишите скрипт sed (назовите это passwd.sed), который обрабатывает Ваш myPasswd.txt файл и
выводит следующие поля в отделенный текстовый файл запятой:
username, shell, home_directory
ppie," bash," /stud/ug/ppie
как правильно это сделать, весь инет перерыл, очень надо, помогите
Задание:
Узнайте то, что содержится в системном файле/etc/passwd на marian сервере.
Conatenate этот файл и переадресовывают вывод к текстовому файлу, названному myPasswd.txt. Используйте
следующая команда, чтобы узнать, что означают различные поля: man -s 4 passwd
Напишите скрипт sed (назовите это passwd.sed), который обрабатывает Ваш myPasswd.txt файл и
выводит следующие поля в отделенный текстовый файл запятой:
username, shell, home_directory
ppie," bash," /stud/ug/ppie
как правильно это сделать, весь инет перерыл, очень надо, помогите
-
- Администратор
- Сообщения: 5403
- ОС: Gentoo
Re: Sed script
danslash писал(а): ↑06.12.2009 20:56Узнайте то, что содержится в системном файле/etc/passwd на marian сервере.
Conatenate этот файл и переадресовывают вывод к текстовому файлу, названному myPasswd.txt. Используйте
следующая команда, чтобы узнать, что означают различные поля: man -s 4 passwd
Напишите скрипт sed (назовите это passwd.sed), который обрабатывает Ваш myPasswd.txt файл и
выводит следующие поля в отделенный текстовый файл запятой:
username, shell, home_directory
ppie," bash," /stud/ug/ppie
А теперь то же самое, только по-русски.
-
- Сообщения: 9
Re: Sed script
Нужно взять файл из директории /etc/passwd занести все данные в myPasswd.txt написать скрипт SED названый passwd.sed который обрабатывает этот файл myPassqd.txt и выводит следующие поля в отделенный текстовый файл
Пример как должен выглядеть выходной файл
username, shell, home_directory
ppie," bash," /stud/ug/ppie
Assignment A2: “Who sed the password?”
Find out what is contained in the system file /etc/passwd on the marian server.
Conatenate this file and redirect the output to a textfile called myPasswd.txt. Use the
following command to find out what the different fields mean : man -s 4 passwd
Write a sed script (call it passwd.sed) which processes your myPasswd.txt file and
outputs the following fields into a comma separated text file:
username, shell, home_directory
ppie," bash," /stud/ug/ppie
вот оригинал...
Пример как должен выглядеть выходной файл
username, shell, home_directory
ppie," bash," /stud/ug/ppie
Assignment A2: “Who sed the password?”
Find out what is contained in the system file /etc/passwd on the marian server.
Conatenate this file and redirect the output to a textfile called myPasswd.txt. Use the
following command to find out what the different fields mean : man -s 4 passwd
Write a sed script (call it passwd.sed) which processes your myPasswd.txt file and
outputs the following fields into a comma separated text file:
username, shell, home_directory
ppie," bash," /stud/ug/ppie
вот оригинал...
-
- Сообщения: 9
Re: Sed script
Может за оплату...? стучите в аську... 382481448
-
- Модератор
- Сообщения: 4823
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: Sed script
гы. ну что сразу деньги, деньги. хотя если не жалко - я не откажусь =)
Код: Выделить всё
sed -rn 's/^([^:]*)(.*)[:](.*)[:](.*)/\1,\4,\3/p' /etc/passwd
зы. пример отработки:
Код: Выделить всё
[06 Дек 2009 22:48:26] user@deb ~
$ sed -rn '1 s/^([^:]*)(.*)[:](.*)[:](.*)/\1,\4,\3/p' /etc/passwd
root,/bin/bash,/root
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
-
- Сообщения: 9
Re: Sed script
SLEDopit
спасибо большое за отклик...
прочтите пожалуйста личное письмо...
спасибо большое за отклик...
прочтите пожалуйста личное письмо...
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Sed script
потому-что даже ваш короткий однострок жутко непонятен.
впрочем, для одной команды это лишнее конечно.
Код: Выделить всё
$ sed -rn '1 s/^([^:]*)(.*)[:](.*)[:](.*)/\1,\4,\3/p' /etc/passwd
1) вторые скобки лишние.
2) квадратные скобки лишние.
а вообще - всё верно.
вот ещё вариант:
Код: Выделить всё
sed -r 's/:/\n/;s/:/\n/4g;s/\n[^\n]*\n/,/;s/\n/,/' /etc/passwd
ЗЫЖ тут полезен скрипт:
Код: Выделить всё
#!/bin/sed -rf
s/:/\n/
s/:/\n/4g
s/\n[^\n]*\n/,/
s/\n/,/
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Sed script
Код: Выделить всё
s/:/,/5
s/:.*:/,/
-
- Модератор
- Сообщения: 4823
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: Sed script
я что то не могу понять какие именно скобки. можно исправленный вариант?)
ну тогда уж
Код: Выделить всё
sed -n -e "H; s/,//g; s/:/,/6; s/:.*:/,/; s/,.*,/,/; p; x; s/:/,/6; s/^.*:/,/; s/^,//; s/,.*//; s/^/,/;p" /etc/passwd
вот только как убрать перенос строки пока не додумался.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Sed script
-
- Модератор
- Сообщения: 4823
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: Sed script
спасибо.
ну я что-то перестарался. там половину выкинуть надо было )
я просто вот к чему:
Код: Выделить всё
[07 Дек 2009 16:58:42] user@deb ~
$ sed -n 's/:/,/5;s/:.*:/,/;1 p' /etc/passwd
root,/bin/bash
Код: Выделить всё
[07 Дек 2009 16:59:30] user@deb ~
$ sed -n -e "H; s/,//g; s/:.*:/,/; 1p; x; s/:/,/6; s_^.*:/_/_; s/,.*//; 1p" /etc/passwd
root,/bin/bash
/root
впрочем делается это не так сложно:
Код: Выделить всё
sed --posix -n -e "s/:/,/5; s/:.*,/,/; H; s/^.*,/,/; s/:.*//; H; x; s/,.*:/,/;s/\n//g; p; s/.*//g; h" /etc/passwd
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали: