[英]AWK SED Manipulate text to sort it as CSV
我有這個輸入文件
SHARED FOLDER: \\SERVERC1\"uh4"
Share name \\SERVERC1\uh4
Path C:\vol\CN_FS4\CN_QT01\FILESERVER43\userhome
Remark
Maximum users No limit
Users 0
Permissions:
WINDOM\NASCIFSMIG01: FULL CONTROL
WINDOM\ADMINDA14b : FULL CONTROL
WINDOM\ADMINDA16 : FULL CONTROL
The command completed successfully.
============================================================================================================
SHARED FOLDER: \\SERVERC1\"uh5"
Share name \\SERVERC1\uh5
Path C:\vol\CN_FS2\CN_QT01\FILESERVER01\userhome
Remark
Maximum users No limit
Users 0
Permissions:
WINDOM\NASCIFSMIG01: FULL CONTROL
WINDOM\ADMINDA14b : FULL CONTROL
WINDOM\ADMINDA20 : FULL CONTROL
The command completed successfully.
============================================================================================================
我需要這個輸出:
\\SERVERC1\uh4;C:\vol\CN_FS4\CN_QT01\FILESERVER43\userhome;WINDOM\NASCIFSMIG01: FULL CONTROL;WINDOM\ADMINDA14b : FULL CONTROL;WINDOM\ADMINDA16 : FULL CONTROL
\\SERVERC1\uh5;C:\vol\CN_FS2\CN_QT01\FILESERVER01\userhome;WINDOM\NASCIFSMIG01: FULL CONTROL;WINDOM\ADMINDA14b : FULL CONTROL;WINDOM\ADMINDA20 : FULL CONTROL
你有什么建議嗎? 我不知道該怎么做。 我試圖做:sed -n“ / Permissions:/,/命令成功完成/ p”,僅獲得許可,但不起作用。
通過grep和粘貼,
$ grep -oP '^(Share name|Path)\s+\K.*|^WINDOM\\.*' file | paste -d';' - - - - -
\\SERVERC1\uh4;C:\vol\CN_FS4\CN_QT01\FILESERVER43\userhome;WINDOM\NASCIFSMIG01: FULL CONTROL;WINDOM\ADMINDA14b : FULL CONTROL;WINDOM\ADMINDA16 : FULL CONTROL
\\SERVERC1\uh5;C:\vol\CN_FS2\CN_QT01\FILESERVER01\userhome;WINDOM\NASCIFSMIG01: FULL CONTROL;WINDOM\ADMINDA14b : FULL CONTROL;WINDOM\ADMINDA20 : FULL CONTROL
sed -nE 's/^Share name *(\\\\.*)/\1;/p;s/^Path *(.*)$/\1;/p;s/^WINDOM.*/&;/p' input.txt | tr -d "\n" | sed 's/;\\\\/;\n\\\\/g' | sed 's/;$//'
輸出:
\\SERVERC1\uh4;C:\vol\CN_FS4\CN_QT01\FILESERVER43\userhome;WINDOM\NASCIFSMIG01: FULL CONTROL;WINDOM\ADMINDA14b : FULL CONTROL;WINDOM\ADMINDA16 : FULL CONTROL \\SERVERC1\uh5;C:\vol\CN_FS2\CN_QT01\FILESERVER01\userhome;WINDOM\NASCIFSMIG01: FULL CONTROL;WINDOM\ADMINDA14b : FULL CONTROL;WINDOM\ADMINDA20 : FULL CONTROL
這是awk
版本,所有操作均在一個命令中完成。
awk '{i++} i==3 {d=$3} i==4 {d=d";"$2} i>8 && i<12 {d=d";"$0} /===/{print d;i=d=""}' file
\\SERVERC1\uh4;C:\vol\CN_FS4\CN_QT01\FILESERVER43\userhome;WINDOM\NASCIFSMIG01: FULL CONTROL;WINDOM\ADMINDA14b : FULL CONTROL;WINDOM\ADMINDA16 : FULL CONTROL
\\SERVERC1\uh5;C:\vol\CN_FS2\CN_QT01\FILESERVER01\userhome;WINDOM\NASCIFSMIG01: FULL CONTROL;WINDOM\ADMINDA14b : FULL CONTROL;WINDOM\ADMINDA20 : FULL CONTROL
縮短一些:
awk '++i==3{d=$3} i==4{d=d";"$2} i>8&&i<12{d=d";"$0} /===/{print d;i=d=""}' file
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.