我有一个文件,让我们说,以下几行:
alibi
all
bone
chair
clever
cup
curse
dog
donut
我想在以相同字母开头的最后一个单词之后添加换行符;也就是说,我希望输出为:
alibi
all
bone
chair
clever
cup
curse
dog
donut
有什么办法吗?我不是专家,所以我甚至不知道从哪里开始。我更喜欢它也是一个单行。
我在Windows环境Cygwin工作。
答案 0 :(得分:0)
逐行阅读文件,记住单词的第一个字符,与下一个字符的第一个字符进行比较。
#!/bin/bash
prev=''
while read word ; do
char=${word:0:1}
if [[ $prev && $prev != $char ]] ; then
echo
fi
prev=$char
echo "$word"
done < input-file
答案 1 :(得分:0)
我想我找到了一个单行awk
命令来完成我正在寻找的东西:
awk '{if ( substr ($0, 0, 1) != prev) print "\n"$0; else print $0; prev = substr ($0, 0, 1)}'
这个答案改编自http://www.cis.uni-muenchen.de/kurse/pmaier/Korpus/DataIntensiveLinguistics/node40.html的单行。