我开始了一个项目.在编写指令时,我们可以使用以下命令行测试程序:
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
如果我将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)
所有这些都会奏效
这是我想要做的:
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安装,弄乱了正确的文件位置/结构,并且还要求他们克隆了我的仓库,我更愿意避免这些需求.
我知道我可以使用下载原始远程文件curl或wget,然后diff他们,但是这违背检查,看看是否有下载前的任何变化的整个目的.
谢谢阅读!
我正在编写一些 C++ 代码,我需要根据文件的内容预先分配一个数组。我绝对可以以某种方式读取文件并解析字符串,但是从以下 Linux 单行程序中找到正确的数字必须更容易:
cat myfile.txt | grep 'Freqs ---' | sed 's/Freqs ---//g' | wc -w
Run Code Online (Sandbox Code Playgroud)
在 C++ 代码中在文件上使用这个单行的最佳方法是什么?
我有30个文件,每个约10GB.我希望我的最终结果是单个文件,这是从这30个文件中提取IP地址的结果(在此处实现).什么会更快:cat用于将文件合并到一个文件,然后grep在该文件上使用,或使用grep30个文件,然后使用cat组合新创建的30个文件.
我有数据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任何地方的行 如何限制仅匹配第三个字段?
我在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) 我一直在尝试将多个文本文件组合成包含文件名。
我当前的文件内容是:
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。当我尝试此命令时,出现错误:“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 脚本,该脚本采用一个文本文件,其中每一行都是一个数字,并遍历每一行,在所有目录中的所有文件中搜索包含该数字的文件名。输出应该是绝对路径,以便我知道从哪里获取文件。例如,我的文本文件的第一行是“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)
我得到完全相同的输出。谢谢!!!