如何缩短长名单的名称

时间:2014-04-18 05:12:20

标签: bash shell

美好的一天,

我想知道如何缩短一长串不同的名字,以使其可读。

列表:(假设有所不同)

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.

提前感谢任何线索。

5 个答案:

答案 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)

在perl中尝试:

perl -lne 'print $1."\." if(/(.*, .).*/)'

Test

答案 4 :(得分:1)

使用sed和反向引用

sed -r -e "s/^([^,]+), ([a-zA-Z]).*/\1, \2./g" < <file containing list>