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 功能来减少表达。
问候
您可以使用tr:
tr -s "[[:blank:]]" "\n" < file | grep .
Run Code Online (Sandbox Code Playgroud)
该[:blank:]字符类包括所有水平的空白。在-s挤压或减少多个字符出现一个。
在grep删除一个空行(如果存在)。
尝试这个
sed -e 's/[[:space:]]/\n/g' | grep -v '^$'
Run Code Online (Sandbox Code Playgroud)
它同时使用grep和sed,但我希望它没问题(如果您有sed系统,通常grep也有)