我正在从awk编程语言中学习awk,并被这个例子所困扰.
如果我想打印$ 3,如果$ 2等于一个值(例如'1'),我正在使用这个命令工作正常:
awk '$2==1 {print $3}' <infile> | more
Run Code Online (Sandbox Code Playgroud)
但是当我用另一个搜索条件替换1时,例如'findtext',这个命令不起作用.
awk '$1== findtext {print $3}' <infile> | more
Run Code Online (Sandbox Code Playgroud)
这没有返回任何输出,我确定我放在'findtext'中的内容存在于那个地方.我的语法有什么问题吗?
我试过这个,但它不起作用:
awk '$1== "findtext" {print $3}' <infile> | more
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做
1 11 0.959660297 0 0.021231423 -0.0073 -0.0031 MhZisp
2 14 0.180467091 0.800424628 0 0.0566 0.0103 ClNonZ
3 19 0.98089172 0 0 -0.0158 0.0124 MhNonZ
4 15 0.704883227 0.265392781 0.010615711 -0.0087 -0.0092 MhZisp
5 22 0.010615711 0.959660297 0.010615711 0.0476 0.0061 ClNonZ
6 23 0.715498938 0 0.265392781 -0.0013 -0.0309 Unkn
7 …Run Code Online (Sandbox Code Playgroud) 我想从多个文件中提取第5列,按数字顺序命名,并将这些列按顺序粘贴到一个输出文件中.
文件名看起来像:
sample_problem1_part1.txt
sample_problem1_part2.txt
sample_problem2_part1.txt
sample_problem2_part2.txt
sample_problem3_part1.txt
sample_problem3_part2.txt
......
Run Code Online (Sandbox Code Playgroud)
每个问题文件(1,2,3 ......)都有两个部分(第1部分,第2部分).每个文件具有相同的行数.内容如下:
sample_problem1_part1.txt
1 1 20 20 1
1 7 21 21 2
3 1 22 22 3
1 5 23 23 4
6 1 24 24 5
2 9 25 25 6
1 0 26 26 7
sample_problem1_part2.txt
1 1 88 88 8
1 1 89 89 9
2 1 90 90 10
1 3 91 91 11
1 1 …Run Code Online (Sandbox Code Playgroud) 我在目录中有许多文件,文件名类似于file1,file2,file3,file4,file5,.....,file1000.它们具有相同的尺寸,每个都有5列和2000行.我想将它们以数字顺序并排粘贴到一个大文件中,因此最终的大文件应该有5000列和2000行.
我试过了
for x in $(seq 1 1000); do
paste `echo -n "file$x "` > largefile
done
Run Code Online (Sandbox Code Playgroud)
我可以用数字顺序(file1,file2,file3,file4,file5,...,file10,file11,...,file1000)粘贴这些文件,而不是在命令行中写入所有文件名?
例如:
文件1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
...
Run Code Online (Sandbox Code Playgroud)
文件2
2 2 2 2 2
2 2 2 2 2
2 2 2 2 2
....
Run Code Online (Sandbox Code Playgroud)
档案3
3 3 3 3 3
3 3 3 3 3
3 3 3 3 3
....
Run Code Online (Sandbox Code Playgroud)
粘贴file1 file2 file3 ....文件1000> largefile
largefile
1 1 1 1 …Run Code Online (Sandbox Code Playgroud) 我有以下代码来分析一个巨大的数据帧文件(22G,超过 200 万行和 3K 列)。我在一个较小的数据框中测试了代码,它运行正常 ( head -1000 hugefile.txt)。但是,当我在巨大的数据帧上运行代码时,它给了我“分段错误”核心转储。它输出一个 core.number 二进制文件。
我做了一些互联网搜索并想出了使用low_memory =False, 并尝试通过定义读取数据帧chunksize=1000, iterator= True,然后 pandas.concat 块,但这仍然给我带来了内存问题(核心转储)。它甚至不会在核心转储之前读取整个文件,因为我测试只是读取文件并打印一些文本。请帮助并告诉我是否有解决方案可以分析这个巨大的文件。
版本
python 版本:3.6.2
numpy 版本:1.13.1
熊猫版本:0.20.3
操作系统:Linux/Unix
脚本
#!/usr/bin/python
import pandas as pd
import numpy as np
path = "/path/hugefile.txt"
data1 = pd.read_csv(path, sep='\t', low_memory=False,chunksize=1000, iterator=True)
data = pd.concat(data1, ignore_index=True)
#######
i=0
marker_keep = 0
marker_remove = 0
while(i<(data.shape[0])):
j=5 #starts at 6
missing = 0
NoNmiss = 0
while (j < (data.shape[1]-2)):
if pd.isnull(data.iloc[i,j]) == True: …Run Code Online (Sandbox Code Playgroud) 我正在尝试在两个模型之间进行似然比检验.
glm.model1 <- glm(result ~ height + weight )
glm.model2 <- glm(result ~ hight + weight + speed + speed : height + speed : weight )
require(lmtest)
a <- lrtest(glm.model1, glm.model2)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Error in lrtest.default(glm.model1, glm.model2) :
models were not all fitted to the same size of dataset
Run Code Online (Sandbox Code Playgroud)
我知道我的一些"速度"数据丢失,但没有高度和重量数据丢失,因此模型2包含变量"速度"但模型1没有,模型2由于缺失而被glm删除了数据点.因此,当我在模型2和模型1之间进行似然比检验时,数据维度不相等,我最终得到如上所述的错误消息.有没有办法可以查找模型2中删除的数据点,所以在我的简化模型中,我可以包含一些脚本来删除相同的数据点,以保持数据的维度相同?
这是我尝试过的:
1)添加na.action = na.pass以保留模型2中的所有缺失数据,但它不起作用.
2)试过:
glm.model1 <- glm(result ~ height + weight + speed - speed )
## This does work and it gets rid of the sample with "speed" …Run Code Online (Sandbox Code Playgroud)