格式化shell中的输出

时间:2014-04-24 05:28:49

标签: shell awk sed

在shell中执行一些命令后,我得到如下输出,

file1.txt@@/main/v1/v2/v3/v4/v5/v6/v7/v8/v9/v10/5
file2.txt@@/main/v4/v5/v6/v7/v8/v9/v10/4 
file3.txt@@/main/v9/v10/8 

请告诉我可以应用哪些命令来获得如下的最终输出,只是文件名和每行中的最后5个字符

file1.txt  v10/5 
file2.txt  v10/4 
file3.txt  v10/8 

3 个答案:

答案 0 :(得分:4)

使用awk

awk -F"[@/]" '{print $1,$(NF-1)"/"$NF}' file
file1.txt v10/5
file2.txt v10/4
file3.txt v10/8

使用@/分隔文字,打印第一个字段,第二个字段和最后一个字段。

如果需要标签:

awk -F"[@/]" '{print $1"\t"$(NF-1)"/"$NF}' file
file1.txt       v10/5
file2.txt       v10/4
file3.txt       v10/8

答案 1 :(得分:0)

在管道的末尾添加:

sed 's!@@.*/\([^/]*/[^/]*$\)!\t\1!'

答案 2 :(得分:0)

使用awk:

awk -F'@@' '{print $1, substr($2, length($2)-4)}' filename