我有这样的文字:
I am happy. I am here. How are you, Meg?
Run Code Online (Sandbox Code Playgroud)
我希望这是:
I am happy.
I am here.
How are you, Meg?
Run Code Online (Sandbox Code Playgroud)
对于完全停止,我尝试过
tr -s '. ' '\n' <file.txt >out.txt
Run Code Online (Sandbox Code Playgroud)
但它不起作用。
Kus*_*nda 13
你没有。 tr不是为此而设计的。它旨在将一组单个字符音译为另一组单个字符,例如,A-Z转换为a-z. 使用trwith .?(一个点和一个空格)并将\n用换行符替换所有的点和空格。
使用 (GNU)sed代替:
$ echo 'I am happy. I am here. How are you, Meg?' | sed 's/\([!.?]\) /\1\n/g'
I am happy.
I am here.
How are you, Meg?
Run Code Online (Sandbox Code Playgroud)
sed此处的编辑脚本将用相同的字符和换行符替换所有出现的!,.或?后跟空格的 。
据我所知,tr它只适用于单个字符,而"."是一个字符串而不是一个字符,所以可以使用sedor来做你想做的事情awk,例如:
sed -e "s/\. /\n/g" file.txt > out.txt
Run Code Online (Sandbox Code Playgroud)