【发布时间】:2014-09-17 06:30:37
【问题描述】:
例如,我有一个普通文本的文件,例如:
"Word1 word2, word3; word4. Word5"
我想得到一个每行 1 个单词的文件,保持标点,并有序:
,
.
;
Word1
word2
word3
word4
Word5
到目前为止,我发现这与我需要的最接近:
#!/bin/sh
for word in $(cat "input_file.txt"):
do echo $word >> output_file1.txt;
done
sort "output_file1.txt" >> "output_file2.txt"
这会产生这种输出:
Word1
word2,
word3;
word4.
Word5
显然是用空格分隔的。 如何通过空格和标点字符分隔并保留它们?
P.S:文件输入文件中含有丰富的特殊字符,例如变音符号:
Kuͦn、zuͦ、buͤtten、güetter。
当应用grep -Eo '\w+|[^\w ]' file 时,它们被拆分,好像变音符号是一个分隔符:
gu
̈
etter
虽然在其他情况下这些字符不会影响拆分:
brüchen
【问题讨论】:
-
两个问题:(1.) 当您说 'and ordered' 时,您的意思是按照遇到的顺序保持标点符号吗? (2.)可能使用的标点符号是什么?是
. ,;吗? -
按字母顺序排列。可能的标点符号:
. , () : ; -
知道了,如果不需要保留
Word/punct关联,已经给出的答案可以正常工作。