Bash-如何在以相同字母开头的行之后追加换行符?
我有一个文件,比如说,有以下几行:Bash-如何在以相同字母开头的行之后追加换行符?,bash,cygwin,newline,alphabetical,Bash,Cygwin,Newline,Alphabetical,我有一个文件,比如说,有以下几行: alibi all bone chair clever cup curse dog donut 我想在以同一个字母开头的最后一个单词后面加一个换行符;也就是说,我希望输出为: alibi all bone chair clever cup curse dog donut 有什么办法吗?我不是专家,所以我甚至不知道从哪里开始。我也喜欢一行 我在Windows环境Cygwin中工作。逐行阅读文件,记住单词的第一个字符,并与下一个单词的第一个字符进行比较
alibi
all
bone
chair
clever
cup
curse
dog
donut
我想在以同一个字母开头的最后一个单词后面加一个换行符;也就是说,我希望输出为:
alibi
all
bone
chair
clever
cup
curse
dog
donut
有什么办法吗?我不是专家,所以我甚至不知道从哪里开始。我也喜欢一行
我在Windows环境Cygwin中工作。逐行阅读文件,记住单词的第一个字符,并与下一个单词的第一个字符进行比较
#!/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
#/bin/bash
上一页=“”
边读边读;做
char=${word:0:1}
如果[[$prev&&$prev!=$char]];然后
回声
fi
prev=$char
回显“$word”
完成<输入文件
我想我找到了一个单行的awk
命令,它完成了我正在寻找的功能:
awk '{if ( substr ($0, 0, 1) != prev) print "\n"$0; else print $0; prev = substr ($0, 0, 1)}'
此答案改编自。感谢您的帮助,但我想我找到了一个较短的解决方案!