Articles of stdin

我怎样才能正确地读取input从标准input缓冲没有截断任何单词?

嗨,我正在编写一个简单的程序,打算从标准input读取一些文本,然后find该文本中的一些单词,并将其replace为“?” 字符,最后将结果放在标准输出中。 我的问题是,如果当前的缓冲区结束在一个单词的中间,我正在search该单词,“strstr”函数不会发现它作为一个命中。 例: 随着10的缓冲区,find“惊人的” input:“Wordnet是一个真正令人惊讶的软件,我们在Roistr中使用它来进行语义相关,其中一个有用的部分是每个synset都有使用的单词sense的例子,但是有时这些可能会误导一些” 第一个缓冲区:“Wordnet是” – >没有命中 第二缓冲区:“一个真正的” – >没有命中 第三个缓冲区:“mazing pie” – >没命中 正如你可以看到,在第三个缓冲区,我得到了一个错误的否定词令人惊讶,因为它是由缓冲区长度切断。 我需要一个不取决于缓冲区大小的解决scheme,因为例如一个缓冲区[500]可以解决这个例子中的问题,但是如果我得到一个50000的input,问题可能会再次出现。 谢谢 对不起我的英语不好。 我的代码: char* aux = "is"; char* pch; char buff[100]; int readd; int stringsize = strlen(aux); while (((readd = read(0, buff, sizeof buff)) > 0)) { pch = strstr(buff, aux); if (pch != 0) { strncpy(pch, […]

从Bash运行Python与STDIN

我有一个bash代码( Mybash1.sh ),我需要将结果传递给另一个包含Python的bash代码( Mybash2.sh ) 这里是代码。 Mybash1.sh #! /bin/bash # Mybash1.sh cut -f1,3 input_file.txt | sort | ./Mybash2.sh Mybash2.sh是这样的: #! /bin/bash #Mybash2.sh python mycode.py foo.txt <("$@") > output.txt # do something for output.txt 我Mybash2.sh的问题是Mybash2.sh中的“output.txt” Mybash2.sh包含任何结果。 有没有在Mybash2.sh执行Python的正确方法? 请注意, mycode.py将工作,如果我在从Mybash1.sh给出的中间临时文件上运行它。 但我想避免使用,因为我将在Mybash2.sh中的许多实例中调用Mybash1.sh 。 mycode.py代码片段如下所示: if __name__ == "__main__": import sys, os, fileinput progName = os.path.basename(sys.argv[0]) if len(sys.argv) != […]

如何testingSTDIN读取错误

我有一个Linux程序(目前在汇编中)有一个检查:如果从STDIN读取失败,显示一个错误消息。 问题是,我不知道如何testing这个条件,如何执行这个程序,使它无法读取STDIN。 IT必须在没有STDIn的情况下运行,否则STDIN会在程序启动之前closures一些?

按Enter键后隐藏STDIN回显

我正在使用unixterminal的消息系统,所以为了使消息输出更加友好,我想在按下回车button之后隐藏<STDIN>input,以在另一个消息输出中使用它。 my $user = "Someone"; my $message = <STDIN>; #must show what does user type but should hide the message after pressing enter chomp $message; print messagefile "<$user> $message\n"; 我已经在论坛上看到一些方法使用Term::ReadKey但不幸的是我不能做到这一点,因为该模块不存在于系统中。

使用variables作为命令的input

我搜遍了各种留言板,了解为什么我不能在某些情况下使用variables作为命令的input。 这是一个STDIN问题/限制吗? 为什么使用echo和这里string解决问题? 例如, ~$ myvar=$(ls -l) ~$ grep Jan "$myvar" grep: total 9 -rwxr-xr-x 1 jvp jvp 561 Feb 2 23:59 directoryscript.sh -rw-rw-rw- 1 jvp jvp 0 Jan 15 10:30 example1 drwxrwxrwx 2 jvp jvp 0 Jan 19 21:54 linuxtutorialwork -rw-rw-rw- 1 jvp jvp 0 Jan 15 13:08 littlefile -rw-rw-rw- 1 jvp jvp 0 […]

无需按ENTER即可从STDIN读取

我需要阅读Linux中的stdin,虽然我的程序只接收没有新行的消息。 我试过这个代码,但不工作: int main ( void ) { char p_char[48]; memset( p_char, 0, sizeof(p_char) ); fcntl( STDIN_FILENO, F_SETFL, FNDELAY ); read( STDIN_FILENO, p_char, sizeof(p_char) ); } 有人有一个build议?

如何使R脚本从pipe道和用户给定的参数input

我有以下R脚本( myscript.r ) #!/usr/bin/env Rscript dat <- read.table(file('stdin'), sep=" ",header=FALSE) # do something with dat # later with user given "param_1" 用这个脚本,我们可以按照以下方式运行它: $ cat data_no_*.txt | ./myscript.r 我想要做的是让脚本从用户采取额外的参数: $ cat data_no_*.txt | ./myscript.r param_1 我该怎么做才能修改myscript.r以适应?

从stderr而不是stdin读取

我在野外遇到这样的代码,我想知道为什么这个工作。 代码从stderr(fd == 2)读取而不是stdin(fd == 0)。 奇怪的是这实际上有点作用。 您可以阅读在控制台input,但不是pipe道input。 有什么想法发生在这里? #include <stdio.h> #include <unistd.h> int main(){ char buf[15]; int nchars=read(2,buf,15); printf("%d '%s'\n",nchars,buf); }

带有Bash参数的Perl标准input

我想在bash中有这样的pipe道 #! /usr/bin/bash cut -f1,2 file1.txt | myperl.pl foo | sort -u 现在在myperl.pl它有这样的内容 my $argv = $ARG[0] || "foo"; while (<>) { chomp; if ($argv eq "foo") { # do something with $_ } else { # do another } } 但为什么Perl脚本无法识别通过bash传递的参数? 即代码与此消息中断: Can't open foo: No such file or directory at myperl.pl line 15. […]

Lynx跳过从stdin接收参数(post_data)

我正试着用l send发送邮件请求 lynx -source -mime_header -post_data http://localhost/post.php 这将redirect到标准inputfoo = bar 返回 — 返回 ,然后lynx发送请求,但我需要立即发送它避免stdin键入(/post.php只是打印$ _POST数组) 这个命令应该看起来像lynx -source -mime_header -post_data foo=bar http://localhost/post.php但它不起作用。 谢谢