gpt4 book ai didi

BASH:使用 tr 将一行分隔成单词

转载 作者:行者123 更新时间:2023-11-29 09:38:28 25 4
gpt4 key购买 nike

我的部分 Bash 作业包括读取文本文件,然后将每一行分成单词并使用它们。

单词之间用|分隔,行之间用\n分隔。我们被告知使用 tr 命令,但我找不到优雅的解决方案。

一个例子:

Hello | My | Name | Is | Bill

应该给:

Hello
My
Name
Is
Bill

每次迭代一个词。

最佳答案

您只需调用一次 tr 即可完成这项工作:

$ echo "Hello | My | Name | Is | Bill" | tr -cs '[:alpha:]' '\n'
Hello
My
Name
Is
Bill
$

-c 选项用于第一个模式中字符的“补码”; -s 选项“挤出”重复的替换字符。因此,任何非字母的内容都将转换为换行符,但连续的换行符将被压缩为单个换行符。

显然,如果您需要保留 'Everyone else |可以 |打电话 |我 | Fred' 与第一行输出的两个词,那么你必须更加努力地工作:

$ echo "Everyone else | can | call | me | Fred" |
> tr '|' '\n' |
> sed 's/ *$//;s/^ *//'
Everyone else
can
call
me
Fred
$

此处的 sed 脚本删除了前导和尾随空白,中间空白保持不变。如果需要,您可以用一个空格替换多个空格,依此类推。您不能使用 tr 有条件地替换给定字符(例如,更改一些空格并保留其他空格)。

关于BASH:使用 tr 将一行分隔成单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16700564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com