所以我需要在名称文件上使用 cut 命令来获取第一个字母,然后是姓氏的前 7 个字母,这些名称的组织方式如下:Ann Arkest
cut -c1 ...... realnames > ./shortnames
我不确定我把...放在哪里了。
您不能使用仅使用 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
这要短得多(但不那么容易阅读)。