要求
Col1 , Col2 , Col3 , Col4
1 , a:/b/c/abc.txt , f:/b/c/abc1.txt , a:/b/c/abc6.txt
2 , b:/bd/a/s/3/d/mon.dat , g:/b/c/abc 2.txt, b:/b/c/ab7.txt
3 , c:/j/h/4/u/y/d/m/ttt.dat, h:/b/c/abc 3.txt, c:/b/c/abc 8.txt
4 , c:/j/h/4/test1.msg , i:/b/c/abc4.txt , d:/b/c/abc 9.txt
5 , d:/iasa/dda/dia/yyy.dat , j:/b/c/abc5.txt , e:/b/c/abc 10.txt
期待 O/P
Col1 , Col2 , Col3 , Col4
1 , abc.txt , abc1.txt , abc6.txt
2 , mon.dat , abc2.txt , abc7.txt
3 , ttt.dat , abc3.txt , abc8.txt
4 , test1.msg , abc4.txt , abc9.txt
5 , yyy.dat , abc5.txt , abc10.txt
答案1
由于我无法推断出空间分布中的任何系统,我只是猜测了一些格式。随意适应口味。
awk -F, '{gsub (/ |\r/, ""); printf "%-4s ", $1; for (i=2; i<=NF; i++) {n=split($i, T, "/"); printf ", %-10s ", T[n]} printf RS}' OFS=, file
Col1 , Col2 , Col3 , Col4
1 , abc.txt , abc1.txt , abc6.txt
2 , mon.dat , abc2.txt , ab7.txt
3 , ttt.dat , abc3.txt , abc8.txt
4 , test1.msg , abc4.txt , abc9.txt
5 , yyy.dat , abc5.txt , abc10.txt
答案2
使用sed
和column
:
$ sed 's/ //g; s/,[^,]*\//,/g; s/,/ , /g' file | column -t
Col1 , Col2 , Col3 , Col4
1 , abc.txt , abc1.txt , abc6.txt
2 , mon.dat , abc2.txt , ab7.txt
3 , ttt.dat , abc3.txt , abc8.txt
4 , test1.msg , abc4.txt , abc9.txt
5 , yyy.dat , abc5.txt , abc10.txt
- 将所有空格字符替换为空字符串
- 将所有
,
后面跟着的非,
字符替换为/
a,
- 全部替换
,
为,
- 将输出漂亮地打印为表格
column