使用分隔符切割时获取第一个和最后一个匹配项

时间:2014-07-15 07:17:03

标签: shell awk sed sh cut

我有一个包含以下数据的文本文件a.txt

 abc/def/ghi  
 jkl/mno/pqr/stu

我需要剪切它们,以便我以“/”作为分隔符

获得第一个和最后一个字符串

预期输出

abc ghi
jkl stu


cat a.txt |cut -d "/" -f1               #gives me first cell
cat a.txt |rev |cut -d "/" -f1 |rev     #gives me last cell

我希望两个单元格在单个命令中可用。请帮助。

2 个答案:

答案 0 :(得分:4)

你可以使用awk,

$ awk -F/ '{print $1,$NF}' file
abc ghi  
jkl stu

通过sed

$ sed 's~^\([^/]*\).*\/\(.*\)$~\1 \2~g' file
abc ghi  
jkl stu

通过perl

$ perl -pe 's;^([^/]*).*\/(.*)$;\1 \2;g' file
abc ghi  
jkl stu

丑陋的黑客入侵greppaste

$ grep -oP '^[^/]*|\w+(?=$)' file | paste -d' ' - -
abc ghi
jkl stu

答案 1 :(得分:1)

另一个sed(没有捕获),

sed 's@/.*/@ @g' yourfile

<强>测试

$ sed 's@/.*/@ @g' yourfile
abc ghi  
jkl stu