标签: cat

如何重定向`cat`来模拟linux中的用户输入

我开始了一个项目.在编写指令时,我们可以使用以下命令行测试程序:

cat test.txt> test.py

但我没有输出.据我所知,它应该给我一个输出.

test.txt文件如下所示:

1
3
4
2
5
6
7
1
1
8
9
3
4
5
1
-1
Run Code Online (Sandbox Code Playgroud)

test.py文件看起来像:

for i in range(16):
    var=raw_input("type something : ")
    print var
Run Code Online (Sandbox Code Playgroud)

我正在使用此命令行将test.txt文件的内容重定向到运行时的test.py文件.

我已经阅读了有关cat命令的文档.

请问你能帮帮我吗 ?

换句话说,cat命令应该如何模拟用户?我想我必须在我的python文件中改变一些东西.

提前谢谢,Mff

linux cat

0
推荐指数
1
解决办法
809
查看次数

使用eval'$ cmd'执行变量将生成错误

如果我将cat命令保存到字符串然后执行它,那么我将收到错误

linux# cmd="cat /data/test/test.tx* | grep toto"
linux# eval '$cmd'
cat: |: No such file or directory
cat: grep: No such file or directory
cat: toto: No such file or directory
Run Code Online (Sandbox Code Playgroud)

即使

linux# $cmd
cat: |: No such file or directory
cat: grep: No such file or directory
cat: toto: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我知道

linux# eval "$cmd"
Run Code Online (Sandbox Code Playgroud)

工作,但在我的脚本中我想使用 eval '$cmd'

如何将cat命令保存到变量中时执行?

现在如果cmd="echo anymessage"那么

linux# eval '$cmd'
linux# $cmd
linux# eval "$cmd"
Run Code Online (Sandbox Code Playgroud)

所有这些都会奏效

linux bash shell eval cat

0
推荐指数
1
解决办法
4443
查看次数

在UNIX中,是否可以通过http"捕获"文件?

这是我想要做的:

cat https://raw.githubusercontent.com/jplew/SyncDB/master/syncdb
Run Code Online (Sandbox Code Playgroud)

这给出了"没有这样的文件或目录"错误,因为cat显然无法通过HTTP获取远程文件.还有另一种方法来实现这一目标吗?

更大的图片

我正在尝试为我的bash脚本编写自动更新功能.它需要确定脚本的本地版本是否与最新的公共版本不同.如果存在差异,则应下载新版本.

我想我可以使用以下方法测试:

diff [local file] [remote file]
diff syncdb https://raw.githubusercontent.com/jplew/SyncDB/master/syncdb
Run Code Online (Sandbox Code Playgroud)

但是这给出了与上面相同的问题:"没有这样的文件或目录".所以我的第二个想法是试试这个:

cat https://raw.githubusercontent.com/jplew/SyncDB/master/syncdb | diff - syncdb
Run Code Online (Sandbox Code Playgroud)

由于此脚本由公共使用,因此它们没有对公共github存储库的SSH访问权限.其次,我不想用来git diff比较文件,因为这需要它们已经git安装,弄乱了正确的文件位置/结构,并且还要求他们克隆了我的仓库,我更愿意避免这些需求.

我知道我可以使用下载原始远程文件curlwget,然后diff他们,但是这违背检查,看看是否有下载前的任何变化的整个目的.

谢谢阅读!

unix bash cat

0
推荐指数
1
解决办法
472
查看次数

从 C++ 调用“cat”的简单方法?

我正在编写一些 C++ 代码,我需要根据文件的内容预先分配一个数组。我绝对可以以某种方式读取文件并解析字符串,但是从以下 Linux 单行程序中找到正确的数字必须更容易:

cat myfile.txt | grep 'Freqs ---' | sed 's/Freqs ---//g' | wc -w
Run Code Online (Sandbox Code Playgroud)

在 C++ 代码中在文件上使用这个单行的最佳方法是什么?

c++ linux cat

0
推荐指数
1
解决办法
9879
查看次数

什么更快:抓住一堆文件然后点击结果,或者抓住一堆文件然后抓住结果?

我有30个文件,每个约10GB.我希望我的最终结果是单个文件,这是从这30个文件中提取IP地址的结果(在此处实现).什么会更快:cat用于将文件合并到一个文件,然后grep在该文件上使用,或使用grep30个文件,然后使用cat组合新创建的30个文件.

unix bash grep cat

0
推荐指数
1
解决办法
54
查看次数

来自file.csv的cat与grep数据

我有数据file.csv:

(...)
0000046;0000046;04688;29;1;52.1683;20.5567
0000046;0000046;04688;2A;1;52.1818;20.5639
0000046;0000046;04688;3;1;52.1785;20.5629
0000046;0000046;04688;4;1;52.1815;20.5638
0000046;0000046;04688;5;;52.1779;20.5635
0000046;0000046;04688;6;1;52.1813;20.5636
0000046;0000046;04688;7;;52.1777;20.5634
0000046;0000046;04688;8;;52.1810;20.5635
0000046;0000046;04688;9;1;52.1775;20.5631
0000046;0000046;05027;2;;52.1908;20.5660
0000046;0000046;05027;4;1;52.1907;20.5649
0000046;0000046;05527;1;1;52.1824;20.5636
(...)
Run Code Online (Sandbox Code Playgroud)

我需要提取第三个字段与给定值匹配的行.我试过了

cat file.csv |grep 05027
Run Code Online (Sandbox Code Playgroud)

不幸的是,这匹配任何包含05027任何地方的行 如何限制仅匹配第三个字段?

bash awk grep sed cat

0
推荐指数
1
解决办法
297
查看次数

在R中使用cat删除最后一个向量元素中的逗号

我在R中遇到一个小问题,但是我不知道如何解决它。

我想使用cat在R控制台中使用中的sep参数打印消息cat。这是我尝试过的:

words <- c("foo", "foo2", "foo3")
cat("words not included:", "\n", words, sep = ",")
#words not included:,
#,foo,foo2,foo3
Run Code Online (Sandbox Code Playgroud)

如我们所见,逗号:foo。之后插入。

然后我做了:

cat("words not included:", "\n", words, sep = ",", "\n")
#words not included:,
#,foo,foo2,foo3,
Run Code Online (Sandbox Code Playgroud)

我想要的输出是:

#words not included:
    #foo,foo2,foo3
Run Code Online (Sandbox Code Playgroud)

r cat

0
推荐指数
1
解决办法
42
查看次数

将多个文件合二为一,包括文件名

我一直在尝试将多个文本文件组合成包含文件名。

我当前的文件内容是:

1111,2222,3333,4444
Run Code Online (Sandbox Code Playgroud)

我所追求的是:

File1,1111,2222,3333,4444
File1,1111,2222,3333,4445
File1,1111,2222,3333,4446
File1,1111,2222,3333,4447
File2,1111,2222,3333,114444
File2,1111,2222,3333,114445
File2,1111,2222,3333,114446
Run Code Online (Sandbox Code Playgroud)

我找到了多个示例,如何将它们全部组合在一起,但没有将它们组合在一起,包括文件名。

bash shell awk cat

0
推荐指数
1
解决办法
444
查看次数

使用 cat 管道进入 grep 返回错误:没有这样的文件或目录

我正在练习 bash。当我尝试此命令时,出现错误:“grep: where: No such file or directory”。

cat file2.txt | tr " " "\n" | grep –i where | wc -l
Run Code Online (Sandbox Code Playgroud)
Content of file2.txt = 1 2 3 4 where 5 where 7 where

Run Code Online (Sandbox Code Playgroud)

bash grep pipe cat

0
推荐指数
1
解决办法
343
查看次数

为什么这个 bash 循环只输出最后 3 行?

我正在尝试编写一个 bash 脚本,该脚本采用一个文本文件,其中每一行都是一个数字,并遍历每一行,在所有目录中的所有文件中搜索包含该数字的文件名。输出应该是绝对路径,以便我知道从哪里获取文件。例如,我的文本文件的第一行是“286”。我想找到文件名中包含“286”的每个文件,并让计算机告诉我哪个目录包含它。

到目前为止,我有:

for num in $(cat StockTest.txt); do find ./ -name "*$num*.fastq.gz" -print; echo $num; done
Run Code Online (Sandbox Code Playgroud)

输出看起来像:

286
297
300
303
315
531
540
607
613
616
619
637
655
664
681
687
690
./ERS/OldSwabMATCHES/GP_692_A_S298_L001_R1_001.fastq.gz
./ERS/OldSwabMATCHES/GP_692_A_S298_L001_R2_001.fastq.gz
692
./BASHPROJECT/UvS_Combined_030714/UvS-696-A_S10_L001_R1_001.fastq.gz
./BASHPROJECT/UvS_Combined_030714/UvS-696-A_S10_L001_R2_001.fastq.gz
696
./BASHPROJECT/UvS_Combined_032114/UvS-718-B_S42_L001_R1_001.fastq.gz
./BASHPROJECT/UvS_Combined_032114/UvS-718-B_S42_L001_R2_001.fastq.gz
718
Run Code Online (Sandbox Code Playgroud)

如您所见,每个数字的回声都有效,但它只找到了最后三个文件的位置。但是,如果我运行精确的 find 命令,但在循环之外使用这些数字中的每一个,它会返回位置。

IE。find ./ -name "*286*.fastq.gz" -print 返回

./ERS/OldSwabMATCHES/GP_286_A_S444_L001_R1_001.fastq.gz
./ERS/OldSwabMATCHES/GP_286_A_S444_L001_R2_001.fastq.gz
Run Code Online (Sandbox Code Playgroud)

为什么它只对文件的最后三行而不是所有行执行 find 命令?

我也尝试过使用 while 循环:

while IFS= read -r line; do echo "$line"; find -name "*-$line-*.fastq.gz" -print; done < "StockTest.txt"
Run Code Online (Sandbox Code Playgroud)

我得到完全相同的输出。谢谢!!!

bash for-loop while-loop cat fastq

0
推荐指数
1
解决办法
47
查看次数

标签 统计

cat ×10

bash ×7

grep ×3

linux ×3

awk ×2

shell ×2

unix ×2

c++ ×1

eval ×1

fastq ×1

for-loop ×1

pipe ×1

r ×1

sed ×1

while-loop ×1