假设“textfile”包含以下内容:
lorem$ipsum-is9simply the.dummy text%of-printing
假设你想要将每个单词分别打印在一行上。 然而,单词不应该只由空格定义,而是由所有非字母数字字符定义。因此结果应该如下所示:
lorem
ipsum
is9simply
the
dummy
text
of
printing
如何使用Bash shell完成此操作?
一些注意事项:
这不是一个作业问题。
当单词仅由空格确定时,较为简单。只需编写以下内容:
for i in `cat textfile`; do echo $i; done;
会起到作用,并返回:
lorem$ipsum-is9simply
the.dummy
text%of-printing
我看过一些使用IFS环境变量的解决方案来按非字母数字字符拆分单词(参考下面的链接),但我想避免使用IFS有两个原因:1)它需要(我认为)将IFS设置为长列表的非字母数字字符。2)我觉得它有点丑。
以下是我发现的两个相关问题和答案
如何在Bash中按分隔符拆分字符串?
如何在Bash中将行拆分成由一个或多个空格分隔的单词?
tr -cs '[:alnum:]+-.' '\n' < textfile
。当然,这将允许通过句点、省略号和虚线等。但它也将允许+1.23和-1.24e-23等内容通过。 - Jonathan Leffler