Sv1*_*Sv1 8 bash scripting parsing
让我们说" textfile "包含以下内容:
lorem$ipsum-is9simply the.dummy text%of-printing
Run Code Online (Sandbox Code Playgroud)
并且您想要在单独的行上打印每个单词.但是,单词不仅应由空格定义,还应由所有非字母数字字符定义.所以结果应该是这样的:
lorem
ipsum
is9simply
the
dummy
text
of
printing
Run Code Online (Sandbox Code Playgroud)
如何使用Bash shell完成此操作?
一些说明:
这不是一个家庭作业问题.
只应用空格确定单词的简单情况很容易.只写:
for i in `cat textfile`; do echo $i; done;
Run Code Online (Sandbox Code Playgroud)
会做的伎俩,并返回:
lorem$ipsum-is9simply
the.dummy
text%of-printing
Run Code Online (Sandbox Code Playgroud)
对于使用非字母数字字符拆分单词我看过使用IFS环境变量的解决方案(下面的链接),但我想避免使用IFS有两个原因:1)它需要(我认为)将IFS设置为长非字母数字字符列表.2)我发现它有点难看.
以下是我发现的两个相关问答
如何在Bash中的分隔符上拆分字符串?
如何将一行划分为bash中由一个或多个空格分隔的单词?
Jon*_*ler 18
使用tr命令:
tr -cs 'a-zA-Z0-9' '\n' <textfile
Run Code Online (Sandbox Code Playgroud)
' -c
'用于指定字符的补充; ' -s
'挤掉了替补的重复; 这'a-zA-Z0-9'
是一组字母数字字符(也可以添加_
?); '\n'是替换字符(换行符).您还可以使用区域设置敏感的字符类(并且可能包含比上面列表更多的字符):
tr -cs '[:alnum:]' '\n' <textfile
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5874 次 |
最近记录: |