Unix-cut命令从第二个单词中提取字母

时间:2013-11-13 22:46:23

标签: unix cut

所以我需要在名字文件上使用cut命令来获取第一个字母,然后是姓氏的前7个字母 这些名称是这样组织的: Ann Arkest

cut -c1 ...... realnames > ./shortnames

我不确定我把它放在哪里....

1 个答案:

答案 0 :(得分:0)

您无法使用仅限剪切来执行此操作,因为剪切仅允许字符列表或分隔字段列表,但不能同时使用两者。因此cut -c1 realnames获取第一个首字母,而cut -f2 -d' ' realnames获取姓氏,但您无法在一个命令中执行此操作。您可以始终使用两个剪切并写入临时文件,然后使用粘贴将它们拼接在一起。这样做的缺点是临时文件,你不能通过管道解决这个问题,因为粘贴需要两个标准输入流,这不是事情的工作方式。

所以,剪切和粘贴:

cut -c1 realnames>/tmp/names1
cut -f2 -d' ' realnames>/tmp/names2
paste -d '\0' /tmp/names1 /tmp/names2 > ./shortnames
rm /tmp/names1 /tmp/names2

但是如果你允许除了cut之外的程序(例如像paste)那么你也可以使用sed:

sed -e "s/^\(.\)[^ ]* \(.*\)$/\1\2/g" realnames > ./shortnames

哪个更短(但不那么容易阅读)。