使用sed,如何格式化每行一个单词,去除空格

Yan*_*aud 5 sed text-processing

我正在尝试替换模式并清理包含多个单词的文件以每行获取一个单词。

结果是使用此命令行实现的:

sed -e '/^[[:space:]]*$/ d' \             # remove empty line
    -e 's/^[[:space:]]*//' \              # remove white space at the beginning
    -e 's/[[:space:]]*$//' \              # remove white space at the ending (EOL)
    -e 's/[[:space:]][[:space:]]*/\n/g' \ # convert blanks between words to newline
    -e '$a\'                              # add a newline if missing at EOF
    -e .....                              # replace other patterns.
Run Code Online (Sandbox Code Playgroud)

(最后一个表达式在How to add a newline to the end of a file? 中找到了?

这个想法是只用一个小的 sed 程序来处理文件(例如,替换一些模式)并同时格式化文件。

我确信可以使用其他 sed 功能来减少表达。

问候

JRF*_*son 8

您可以使用tr

tr -s "[[:blank:]]" "\n" < file | grep .
Run Code Online (Sandbox Code Playgroud)

[:blank:]字符类包括所有水平的空白。在-s挤压或减少多个字符出现一个。

grep删除一个空行(如果存在)。


Kar*_*lek 4

尝试这个

sed -e 's/[[:space:]]/\n/g' | grep -v '^$'
Run Code Online (Sandbox Code Playgroud)

它同时使用grepsed,但我希望它没问题(如果您有sed系统,通常grep也有)