2015-07-22 2 views
0

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

[email protected][10.10.10.19] ~ # cat /tmp/first20lines 
Jul 7 19:35:23 smtpd 3D95D1E923C8 client=localhost[127.0.0.1] 
Jul 7 19:35:23 cleanup 3D95D1E923C8 [email protected] 
Jul 7 19:35:23 qmgr  3D95D1E923C8 from=<[email protected]> nrcpt=1 
Jul 7 19:35:23 pipe  3D95D1E923C8 to=<[email protected]> status=sent (delivered via maildrop service) 
Jul 7 19:35:23 qmgr  3D95D1E923C8 removed 
Jul 5 03:10:02 pickup 3165F1E923C8 from=<www-data> 
Jul 5 03:10:02 cleanup 3165F1E923C8 message-id=<[email protected]> 
Jul 5 03:10:02 qmgr  3165F1E923C8 from=<[email protected]> nrcpt=1 
Jul 5 03:10:05 smtp  3165F1E923C8 to=<[email protected]> queued as 900031E923C7 
Jul 5 03:10:05 qmgr  3165F1E923C8 removed 
Jul 5 03:10:05 smtpd 900031E923C7 client=localhost[127.0.0.1] 
Jul 5 03:10:05 cleanup 900031E923C7 message-id=<[email protected]> 
Jul 5 03:10:05 qmgr  900031E923C7 from=<[email protected]> nrcpt=1 
Jul 5 03:10:05 local 900031E923C7 to=<[email protected]> status=sent (delivered to command: procmail -a "$EXTENSION") 
Jul 5 03:10:05 qmgr  900031E923C7 removed 
Jul 7 11:49:25 pickup 7E57B1E923E8 from=<> 
Jul 7 11:49:25 cleanup 7E57B1E923E8 message-id=<[email protected]> 
Jul 7 11:49:25 smtp  7E57B1E923E8 to=<[email protected]> queued as 9494B1E923C8 
Jul 7 11:49:25 qmgr  7E57B1E923E8 removed 
Jul 7 11:49:25 smtpd 9494B1E923C8 client=localhost[127.0.0.1] 
[email protected][10.10.10.19] ~ # 

Я хочу, чтобы это (свопа ID очереди и имя процесса, то вроде)

Jul 5 03:10:02 3165F1E923C8 cleanup message-id=<[email protected]> 
Jul 5 03:10:02 3165F1E923C8 pickup from=<www-data> 
Jul 5 03:10:02 3165F1E923C8 qmgr from=<[email protected]> nrcpt=1 
Jul 5 03:10:05 3165F1E923C8 qmgr removed 
Jul 5 03:10:05 3165F1E923C8 smtp to=<[email protected]> queued as 900031E923C7 
Jul 5 03:10:05 900031E923C7 cleanup message-id=<[email protected]> 
Jul 5 03:10:05 900031E923C7 local to=<[email protected]> status=sent (delivered to command: procmail -a "$EXTENSION") 
Jul 5 03:10:05 900031E923C7 qmgr from=<[email protected]> nrcpt=1 
Jul 5 03:10:05 900031E923C7 qmgr removed 
Jul 5 03:10:05 900031E923C7 smtpd client=localhost[127.0.0.1] 
Jul 7 11:49:25 7E57B1E923E8 cleanup message-id=<[email protected]> 
Jul 7 11:49:25 7E57B1E923E8 pickup from=<> 
Jul 7 11:49:25 7E57B1E923E8 qmgr removed 
Jul 7 11:49:25 7E57B1E923E8 smtp to=<[email protected]> queued as 9494B1E923C8 
Jul 7 11:49:25 9494B1E923C8 smtpd client=localhost[127.0.0.1] 
Jul 7 19:35:23 3D95D1E923C8 cleanup [email protected] 
Jul 7 19:35:23 3D95D1E923C8 pipe to=<[email protected]> status=sent (delivered via maildrop service) 
Jul 7 19:35:23 3D95D1E923C8 qmgr from=<[email protected]> nrcpt=1 
Jul 7 19:35:23 3D95D1E923C8 qmgr removed 
Jul 7 19:35:23 3D95D1E923C8 smtpd client=localhost[127.0.0.1] 

Лучшее, что я мог бы получить это (может поменять очереди ID и имя процесса, но coudln't сохранить столбцы красиво и аккуратно), после прочтения this и this:

[email protected][10.10.10.19] ~ # awk '{temp=$4; $4=$5; $5=temp; print}' /tmp/first20lines | sort 
Jul 5 03:10:02 3165F1E923C8 cleanup message-id=<[email protected]> 
Jul 5 03:10:02 3165F1E923C8 pickup from=<www-data> 
Jul 5 03:10:02 3165F1E923C8 qmgr from=<[email protected]> nrcpt=1 
Jul 5 03:10:05 3165F1E923C8 qmgr removed 
Jul 5 03:10:05 3165F1E923C8 smtp to=<[email protected]> queued as 900031E923C7 
Jul 5 03:10:05 900031E923C7 cleanup message-id=<[email protected]> 
Jul 5 03:10:05 900031E923C7 local to=<[email protected]> status=sent (delivered to command: procmail -a "$EXTENSION") 
Jul 5 03:10:05 900031E923C7 qmgr from=<[email protected]> nrcpt=1 
Jul 5 03:10:05 900031E923C7 qmgr removed 
Jul 5 03:10:05 900031E923C7 smtpd client=localhost[127.0.0.1] 
Jul 7 11:49:25 7E57B1E923E8 cleanup message-id=<[email protected]> 
Jul 7 11:49:25 7E57B1E923E8 pickup from=<> 
Jul 7 11:49:25 7E57B1E923E8 qmgr removed 
Jul 7 11:49:25 7E57B1E923E8 smtp to=<[email protected]> queued as 9494B1E923C8 
Jul 7 11:49:25 9494B1E923C8 smtpd client=localhost[127.0.0.1] 
Jul 7 19:35:23 3D95D1E923C8 cleanup [email protected] 
Jul 7 19:35:23 3D95D1E923C8 pipe to=<[email protected]> status=sent (delivered via maildrop service) 
Jul 7 19:35:23 3D95D1E923C8 qmgr from=<[email protected]> nrcpt=1 
Jul 7 19:35:23 3D95D1E923C8 qmgr removed 
Jul 7 19:35:23 3D95D1E923C8 smtpd client=localhost[127.0.0.1] 
[email protected][10.10.10.19] ~ # 

ответ

1

Вы можете использовать следующую команду: awk

awk '{t=$4;$4=$5;$5=t"\t"}1' file 

Он хранит столбец 4 во временной переменной t, присваивает $ 5 до $ 4 и, наконец, присваивает t к $5 и добавляет tab. 1 всегда будет оцениваться до true, и поэтому awk печатает текущую (измененную) линию.

Это выходы:

Jul 7 19:35:23 3D95D1E923C8 smtpd client=localhost[127.0.0.1] 
Jul 7 19:35:23 3D95D1E923C8 cleanup [email protected] 
Jul 7 19:35:23 3D95D1E923C8 qmgr  from=<[email protected]> nrcpt=1 
Jul 7 19:35:23 3D95D1E923C8 pipe  to=<[email protected]> status=sent (delivered via maildrop service) 
Jul 7 19:35:23 3D95D1E923C8 qmgr  removed 
Jul 5 03:10:02 3165F1E923C8 pickup from=<www-data> 
Jul 5 03:10:02 3165F1E923C8 cleanup message-id=<[email protected].dz> 
Jul 5 03:10:02 3165F1E923C8 qmgr  from=<[email protected]> nrcpt=1 
Jul 5 03:10:05 3165F1E923C8 smtp  to=<[email protected]> queued as 900031E923C7 
Jul 5 03:10:05 3165F1E923C8 qmgr  removed 
Jul 5 03:10:05 900031E923C7 smtpd client=localhost[127.0.0.1] 
Jul 5 03:10:05 900031E923C7 cleanup message-id=<[email protected]> 
Jul 5 03:10:05 900031E923C7 qmgr  from=<[email protected]> nrcpt=1 
Jul 5 03:10:05 900031E923C7 local to=<[email protected]> status=sent (delivered to command: procmail -a "$EXTENSION") 
Jul 5 03:10:05 900031E923C7 qmgr  removed 
Jul 7 11:49:25 7E57B1E923E8 pickup from=<> 
Jul 7 11:49:25 7E57B1E923E8 cleanup message-id=<[email protected]> 
Jul 7 11:49:25 7E57B1E923E8 smtp  to=<[email protected]> queued as 9494B1E923C8 
Jul 7 11:49:25 7E57B1E923E8 qmgr  removed 
Jul 7 11:49:25 9494B1E923C8 smtpd client=localhost[127.0.0.1] 

... который не является точно такой же, как вы описали в вопросе, но я надеюсь, что это будет достаточно хорошо.

+0

Напротив, это идеально. Огромное спасибо. Я использовал ваше решение, но вместо добавления 1 я просто добавил инструкцию для печати, подобную этой 'awk '{temp = $ 4; $ 4 = $ 5; $ 5 = Темп "\ т"; print} '/ tmp/first20lines | sort' – ychaouche

+0

Добро пожаловать. Да, вы также можете использовать 'print', если вы предпочитаете его для удобочитаемости. Это приводит к такому же результату. – hek2mgl

Смежные вопросы