分页: 1 / 1

cat | wc -c为什么不能输入一行,然后就显示出wc的统计结果?

发表于 : 2015-03-06 11:27
jiandan23
RT,研究很久了,都没找到原因

Re: cat | wc -c为什么不能输入一行,然后就显示出wc的统计结果?

发表于 : 2015-03-06 11:51
rosynirvana
可以的
cat | wc -c
12345^D^D
第一个^D刷新缓存把数据送进去,第二个^D表示cat的输入结束

但是结果会在同一行,看上去就是123455

Re: cat | wc -c为什么不能输入一行,然后就显示出wc的统计结果?

发表于 : 2015-03-06 14:47
jiandan23
那为什么执行cat > a.txt的时候,每输入一行,按下回车之后,该行就会被立刻写入a.txt?
rosynirvana 写了:可以的
cat | wc -c
12345^D^D
第一个^D刷新缓存把数据送进去,第二个^D表示cat的输入结束

但是结果会在同一行,看上去就是123455

Re: cat | wc -c为什么不能输入一行,然后就显示出wc的统计结果?

发表于 : 2015-03-06 15:05
rosynirvana
jiandan23 写了:那为什么执行cat > a.txt的时候,每输入一行,按下回车之后,该行就会被立刻写入a.txt?
rosynirvana 写了:可以的
cat | wc -c
12345^D^D
第一个^D刷新缓存把数据送进去,第二个^D表示cat的输入结束

但是结果会在同一行,看上去就是123455
行缓冲,用^D刷新缓冲区也是一个效果

Re: cat | wc -c为什么不能输入一行,然后就显示出wc的统计结果?

发表于 : 2015-03-25 22:53
limkokhole
$ cat | while read -r line; do echo -n "$line"| wc -c; done
apple is a
10
hello world
11
$

我能想到的是用 while read, 不是很熟悉 pipeline, 尝试用 xargs -n1, stdbuf -o 0 都失败在 wc -l 把 input 当成文件名来读取。 不知谁能分享其它更好的方法 ? :oops:

Re: cat | wc -c为什么不能输入一行,然后就显示出wc的统计结果?

发表于 : 2015-03-26 11:59
zhw2101024
看这里

代码: 全选

wc -l <(ls)
<()这个语法相当于把命令的输出重定向到

代码: 全选

/dev/fd/63
这个文件描述符,然后把文件1描述符路径作为一个参数传给前边的wc -l。