gpt4 book ai didi

bash - 如果找到数字,如何按模式在 bash 中拆分文件

转载 作者:行者123 更新时间:2023-12-05 09:01:54 26 4
gpt4 key购买 nike

我有这样的文字:

1Lorem ipsum dolor sit amet, consectetur adipiscing elit. 2Vivamus dictum, justo mattis sollicitudin pretium, ante magna gravida ligula, 3a condimentum libero tortor sit amet lectus. Nulla congue mauris quis lobortis interdum. 4Integer eget ante mattis ante egestas suscipit. Suspendisse imperdiet pellentesque risus, a luctus sem pellentesque nec. Curabitur vel luctus eros. Morbi id magna sit amet 5risus hendrerit porta. Praesent vitae sapien in nunc aliquet pharetra vitae sed lectus. Donec id magna magna. Phasellus eget rhoncus purus, vitae vestibulum nisl. 6Phasellus massa mi, ultricies id mi sit amet, tristique auctor mi. 

我想根据找到的数字拆分文本,无论如何;喜欢:

1Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
2Vivamus dictum, justo mattis sollicitudin pretium, ante magna gravida ligula,
3a condimentum libero tortor sit amet lectus. Nulla congue mauris quis lobortis interdum.
...

在 awk 中,我试过:

cat text | awk -F'/^[-+]?[0-9]+$/' '{for (i=1; i<= NF; i++) print $i}'

其中-F/^[-+]?[0-9]+$/,一种用来判断是否为数字的模式。但它没有拆分文本。

如果我将模式更改为任何分隔符它都可以正常工作,那么我应该使用什么模式呢?

最佳答案

我将利用 GNU AWK 按照以下方式完成此任务,让 file.txt 内容为

1Lorem ipsum dolor sit amet, consectetur adipiscing elit. 2Vivamus dictum, justo mattis sollicitudin pretium, ante magna gravida ligula, 3a condimentum libero tortor sit amet lectus. Nulla congue mauris quis lobortis interdum. 4Integer eget ante mattis ante egestas suscipit. Suspendisse imperdiet pellentesque risus, a luctus sem pellentesque nec. Curabitur vel luctus eros. Morbi id magna sit amet 5risus hendrerit porta. Praesent vitae sapien in nunc aliquet pharetra vitae sed lectus. Donec id magna magna. Phasellus eget rhoncus purus, vitae vestibulum nisl. 6Phasellus massa mi, ultricies id mi sit amet, tristique auctor mi.

然后

awk 'BEGIN{RS="[-+]?[0-9]+"}{printf "%s%s%s", $0, NR==1?"":"\n", RT}' file.txt

给出输出

1Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
2Vivamus dictum, justo mattis sollicitudin pretium, ante magna gravida ligula,
3a condimentum libero tortor sit amet lectus. Nulla congue mauris quis lobortis interdum.
4Integer eget ante mattis ante egestas suscipit. Suspendisse imperdiet pellentesque risus, a luctus sem pellentesque nec. Curabitur vel luctus eros. Morbi id magna sit amet
5risus hendrerit porta. Praesent vitae sapien in nunc aliquet pharetra vitae sed lectus. Donec id magna magna. Phasellus eget rhoncus purus, vitae vestibulum nisl.
6Phasellus massa mi, ultricies id mi sit amet, tristique auctor mi.

说明:我通知 GNU AWK 行分隔符 (RS) 是 (-+) 重复的0 或 1 次,数字重复 1 次或多次。然后对于每一行,我 printf 所述行的内容后跟换行符(仅适用于非第一个单词)后跟找到的行终止符(RT)。

(在 gawk 4.2.1 中测试)

关于bash - 如果找到数字,如何按模式在 bash 中拆分文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72572061/

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