美好的一天,
我想知道如何缩短一长串不同的名字,以使其可读。
列表:(假设有所不同)
simon, gaurent
simon, gaurent
simon, gaurent
simon, gaurent
simon, gaurent
simon, gaurent
simon, gaurent
并且,我想获得:
simon, g.
simon, g.
simon, g.
simon, g.
simon, g.
simon, g.
simon, g.
提前感谢任何线索。
答案 0 :(得分:4)
如果您想要纯bash
解决方案:
while read firstPlusComma last; do
echo "$firstPlusComma ${last:0:1}."
done < file
答案 1 :(得分:2)
使用awk
:
$ awk '{$2=substr($2,1,1)"."}1' file
simon, g.
simon, g.
simon, g.
simon, g.
simon, g.
simon, g.
simon, g.
substr
函数将第二个字段修改为第一个字符。根据输出的需要在末尾附加.
。 1
打印该行。 答案 2 :(得分:1)
以下awk
单行将打印出第一列,然后是第二列的第一个字母和句点。
awk 'BEGIN{FS=OFS=", "} {print $1, substr($2, 1, 1)"."}' input.csv
如果您想使用标准重定向,可以将其重定向到文件。
awk 'BEGIN{FS=OFS=", "} {print $1, substr($2, 1, 1)"."}' input.csv > output.csv
答案 3 :(得分:1)
答案 4 :(得分:1)
使用sed和反向引用
sed -r -e "s/^([^,]+), ([a-zA-Z]).*/\1, \2./g" < <file containing list>