gpt4 book ai didi

bash - 在命令行上进行多阶段文本操作?

转载 作者:行者123 更新时间:2023-11-29 09:30:23 24 4
gpt4 key购买 nike

我有一个文件,里面有一堆文本,用换行符分隔:

例如。

"This is sentence 1.\n"
"This is sentence 2.\n"
"This is sentence 3. It has more characters then some other ones.\n"
"This is sentence 4. Again it also has a whole bunch of characters.\n"

我希望能够使用一些命令行工具,对于每一行,计算每行中的字符数,然后,如果每行有超过 X 个字符,则按句点拆分( "."),然后统计分割线中每个元素的字符数。

例如。最终输出的行号:

1. 24
2. 24
3. 69: 20, 49 (i.e. "This is sentence 3" has 20 characters, "It has more characters then some other ones" has 49 characters)

wc 仅将文件名作为输入,因此我无法指示它接收文本字符串以进行字符计数

head -n2 processed.txt | tr "." "\n" | xargs -0 -I line wc -m line

给我错误:“:打开:没有那个文件或目录”

最佳答案

awk 非常适合这个。下面的代码应该可以帮助您入门,您可以解决其余的问题:

awk -F. '{print length($0),NF,length($1)}'   yourfile

输出:

23 2 19
23 2 19
68 3 19
70 3 19

它使用句点作为字段分隔符(-F.),打印整行的长度($0)、字段数(NF)和第一个字段的长度($1)。

这是另一个打印整行和每个字段的长度的小例子:

awk -F. '{print $0;for(i=0;i<NF;i++)print length($i)}' yourfile
"This is sentence 1.\n"
23
19
"This is sentence 2.\n"
23
19
"This is sentence 3. It has more characters then some other ones.\n"
68
19
44
"This is sentence 4. Again it also has a whole bunch of characters.\n"
70
19
46

顺便说一句,“wc”可以像这样处理发送到它的标准输入的字符串:

echo -n "Hello" | wc -c
5

关于bash - 在命令行上进行多阶段文本操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20451288/

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