-1

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

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

我不确定我把...放在哪里了。

4

1 回答 1

0

您不能使用仅使用 cut 来执行此操作,因为 cut 只允许字符列表或分隔字段列表,但不能同时允许两者。因此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

但是,如果您允许除剪切之外的程序(例如粘贴),那么您也可以只使用 sed:

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

这要短得多(但不那么容易阅读)。

于 2013-11-13T23:13:28.577 回答