我有一个像这样的文件
seq1 CT 5 CCCGCTGCTGATGAC
seq2 AG 8 CTGTGTAGATGATGGGTTAGAG
seq3 TG 3 CGTGTGACA
我试图用字段2中的字符串替换字段4的第n个字符,其中n=字段3指定的值。输出将是
seq1 CT 5 CCCGCTTGCTGATGAC
seq2 AG 8 CTGTGTAAGATGATGGGTTAGAG
seq3 TG 3 CGTGGTGACA
我的尝试是这样的
awk '{a=$3; b=
我试图浏览一组可能包含加拿大邮政编码的数据(formatA0A 0A0),并希望打印包含加拿大邮政编码的行。中间可能有或可能没有空间。我尝试了以下正则表达式:
awk '{if($5~/[a-zA-Z][0-9][a-zA-Z] +[0-9][a-zA-Z][0-9]/){print $5}}
这将返回有空格的行。我认为“+”将使它返回带和不带的两行。我还尝试:
awk '{if($5~/[a-zA-Z][0-9][a-zA-Z][ ]+[0-9][a-zA-Z][0-9]/){print $
我有一个文本源(一个日志文件),它由一些第三方追加新行
我可以使用tail-f source将添加内容输出到源文件中。然后我可以通过一个awk脚本awk-f parser.awk来解析和格式化输出
我的问题是:当tail-f source | awk-f parser.awk正在运行时,是否有方法在解析器.awk中调用函数foo(),每次超过5秒,没有任何东西通过管道进入awk脚本的标准输入
编辑:当前使用GNU Awk 3.1.6。如果需要,可以升级到新版本。这不完全是您问题的答案。不过,sh
我需要一个关于使用awk对多个文件执行一些操作的帮助。
我总共有500个文件,每个文件包含800行数据和两列(第一列和第二列)
我希望添加每个文件(所有500个文件)的第一行第二列,计算平均值并存储在新的输出文件中(比如average.out)
然后转到第二行,所有文件(所有500个文件)的第二列,计算平均值并存储在average.out中。它一直持续到“average.out”文件包含800行
在对我的数据进行其他计算之前,我迫切需要解决这个计算。希望我能有所了解
提前感谢。这将显示所有行号及
我还有一个问题
我有这个数据集
1955|1;.;.;.;.;.;.;
1955|1;.;.;.;.;.;.;
1955|1;.;.;.;.;.;.;
1955|2;.;.;.;.;.;.;
1955|2;.;.;.;.;.;.;
1955|2;.;.;.;.;.;.;
1955|3;.;.;.;.;.;.;
1955|3;.;.;.;.;.;.;
1955|3;.;.;.;.;.;.;
1955|4;.;.;.;.;.;.;
1955|4;.;.;.;.;.;.;
1955|4;.;.;.;
这里怎么了
基于这个例子
ls -l | awk 'BEGIN {max = 0; rec=""} {if ($5>max) max=$5; rec=$0} END {print max "\n" rec}'
max打印最大文件的大小,但rec不打印相应的记录,而只打印最后一条通过的记录。
我希望rec包含最大文件的完整记录
if ($5>max) max=$5; rec=$0
相当于:
if ($5>max) {
max=$5;
}
rec=$0
它无条件地设置re
我将awk(也尝试了sed)作为bash菜单的一部分,但它只是立即打开和关闭。我知道我做错了什么,但不知道是什么。谢谢:)
使用正则表达式提取所需的位怎么样
#!/usr/perl/bin
use strict;
use warnings;
while (<DATA>) {
#skip to next row if doesn't start with NC_0000
next unless m/^NC_0000/;
#extract digits aft
我第一次使用这个命令:
svn log -l1000 | grep '#xxxx' -B3 | awk 'BEGIN {FS="\n"; RS=""; OFS=";"} {print $1, $2}'
输出有许多行。但这不是我想要的完美。
因为有一些空行或格式为“----”的行。因此,我使用sed命令删除它们。我使用:
svn log -l1000 | grep '#xxxx' -B3 | sed '/^$/d' | sed '/^--/d' | awk 'BEGIN {FS="\n"; RS
多年来,我一直使用脚本监控日志文件并从中提取数据,从未质疑过大多数人认为理所当然的基本工具集。特别是grep和awk几乎被社区中的每个人使用
我发现了当前的grep bug(有些可以追溯到几年前):
以及GNU grep 2.6.3的手册页:
已知错误
{n,m}构造中的大量重复计数可能会导致grep使用大量内存。此外,某些其他晦涩的正则表达式需要指数级的时间和空间,并可能导致grep耗尽内存
反向引用非常慢,可能需要指数时间
以及GNU Awk 3.1.7的手册页:
虫子
鉴于命令行变量赋值
我有一个2行的.txt文件和一个分隔符,但有些行只包含1行,所以我想删除那些只包含1行的行
线条的示例有
要保持的路线
Iamnotyours:email@email.com
要删除的行
Iamnotyours:
awk救援
$ awk -F: 'NF==2' file
仅打印包含两个字段的行
$ awk -F: 'NF>1' file
在多个字段中打印行。在您的情况下,如果您有适当的分隔符,则字段计数将为2。您需要检查第二个字段是否为空
$ awk -F: '$2!=""
我有一个相对较大的blastn输出文件。由于没有指定查询序列的最小核苷酸长度的选项,我的想法是在blast运行之后使用awk搜索它
该文件的一个示例如下:
> abc
Length=4553119
Score = 273 bits (302), Expect = 3e-74
Identities = 151/151 (100%), Gaps = 0/151 (0%)
Strand=Plus/Plus
Query 1 CCCACATCGAACTCGACGGTGAC
我有一个应用程序日志,其中包含请求和响应以及一些sql查询。我希望找到请求行后面跟一个sql,它占用的时间超过一个特定的时间,例如,我有下面的日志片段,我希望有一个awk oneliner,它吐出下面的行-它查找导致sql运行超过1秒的请求
11:01:19:518 FfsFrm\u测试\u缓冲区20
日志片段-
11:01:19:518 FfsFrm\u视图\u缓冲区20
输入缓冲区如下
11:01:19:549 DBA 10
SQL执行时间:0.004383秒
11:01:19:549 DB
我有一个tab delim文件1
A 1 0.1 0.2
A 20 0.3 0.3
B 17 0.1 0.7
B 33 0.33 0.55
C 10 0.2 0.3
C 20 0.0 0.55
E 7 0.44 0.3
还有另一个标签delim文件2
A 1 5 aie
A 6 20 cal
B 1 10 nan
B 30 60 ota
C 10 20 car
E 1 6 err
我想合并两个文件,其中col1 file1=col1 file2和col2 file1中的值在file2
我有一个HTML文件,其中一行包含一个字符串,我想在字符串之后移动到另一行
该命令需要考虑文档中第一个字符串的变化
我用Sed尝试了以下方法,但不起作用:
sed 's/\(aria-describedby="page-[0-9]"\)\(.*<aside \)/\2\1/g'
期望输出:
<h6 id="page-1">Page 1</h6>
<h1 id="chapter-1">Chapter 1</h1>
<p>This
我想提取查询给出结果的服务器。从下面的输出中,我必须提取服务器名“TSMPDC1”
ANR1687I Output for command 'QUERY NODE pdviateng017' issued against server CSNDCTSMP008 follows:
ANR2034E QUERY NODE: No match found using this criteria.
ANR1687I Output for command 'QUERY NODE pdviateng017'
我正在创建一个名为“size”的变量,并尝试从gawk位置变量为其赋值。但是,这似乎不起作用。在下面的示例中,我试图将字段4的值存储到变量“size”中。当我打印可变大小时,整行打印,而不是仅打印字段4
如何将字段值保存到变量中以供以后使用
prompt> echo "Live in a big city" | gawk '/Live/ {size=$4; print $size}'
输出以下内容:
住在大城市里
我只想看到这一点:
大的省去美元符号。awk类似于C,而不像shell或
我得到了几段代码,如下所示:
for ff in `seq 3 $nlpN`;
do
npc1[$ff]=`awk 'NR=='$ff' {print $1}' p_walls.raw`;
echo ${npc1[$ff]};
npc2[$ff]=`awk 'NR=='$ff' {print $2}' p_walls.raw`;
npc3[$ff]=`awk 'NR=='$ff' {print $3}' p_walls.raw`;
npRs[$ff
我有这样一个输入文件:
SomeSection.Foo
OtherSection.Foo
OtherSection.Goo
for (key in arr_obj) { ## Assign 'string\034string' to 'key' variable
split( key, key_parts, SUBSEP ) ## Split 'key' with the content of SUBSEP variable.
我有一个这样的单字段文件
scaffold10017|size24957-5236
scaffold10017|size24957-5236
scaffold10017|size24957-5236
scaffold10017|size24957-7124
scaffold10076|size19532-3212
scaffold10076|size19532-6287
scaffold1008|size40169-12384
scaffold1008|size40169-12399
scaff
在Awk中,范围模式不是表达式,因此不能使用“!”来表示它。
那么如何实现它(使用awk打印除匹配范围模式之外的所有内容)
e、 g
$cat 1.t
abd
hfdh
#
fafa
deafa
123
#
end
我想要的结果是:
类别1.t
abd
hfdh
end
编辑:
我举了一个无礼的例子。endpattern应该与startpattern不同,因为我还没有测试它。那是我的错
同时,我想以不同的方式操作范围模式和非范围模式。所以sed不是我的选择。sed是一种选择吗
$ se
我正在尝试一个用于二维数组的简单awk脚本,如下所示:
BEGIN{
b[1][1]=0
split("5 4 3 2",b[1])
print b[1][1]
}
GNUGawk教程中也提到了这个代码片段。但是当我尝试运行这个时,我得到了索引b的语法错误。谁能说出问题出在哪里?在gnu教程中,它们显示了输出 更新
正常的awk使用b[1,1]语法,但它不是真正的2D数组。而是一个散列,包含像1 SUBSEP 1这样的元素。因此,如果您对(b中的i)print i
我正在寻找awkcode以连接从PDF粘贴的行。连接应按照以下规则进行:如果行中的最后一个字符不是句点,则应向该行添加空格字符,并将下一行连接到该行
示例输入文本(在文件中):
预期产出:
在一所完美的学校里,学生们会彼此关爱
还有尊重。分歧将被容忍,甚至受到欢迎。孩子们
会因为友善和支持而变得更受欢迎。学生会
尽力让对方感到快乐和幸福
舒服。但大多数学校并不完美。而不是作为一个地方
出于尊重和宽容,这些地方的可恨行为
欺凌行为很普遍
学生们必须在学校里处理各种各样的问题。有
困难的课程、太多的
我有一项任务要获得以下输出:
ps auxfwww | sort -k2n | head -n4
然后我必须使用awk重新排列它,这样我就得到了第1、第3、第11列的第2、3、4行。但行的顺序必须是3,4,2。我得到的最接近的结果是:
ps auxfwww | sort -k2n | head -n4 | awk 'NR>=3' | awk '{print $1, $3, $11}'
但我不知道如何让第2行在第3行和第4行之后
它还必须使用单行命令来完成
请解释一下:)
这将打印第3行
所以,我想为学校作业做一个awk程序。我刚刚开始,所以在编写程序之前,我想我应该先练习一下。这是我的练习计划:
BEGIN {print "yo"}
我尝试使用以下命令运行它:
awk -f awk1 sample
其中示例只是一个文本文件,其中包含一些我想要处理的记录(用于实际作业),计算机只是这样说:
awk: syntax error near line 1
awk: bailing out near line 1
我觉得自己完全是个哑巴,但我做错了什么?就我所知,这个程序似乎没有什
我有一个这样的文件,前三行是正确的,下面几行是错误的。我需要在第一列和第二列之间为错误的行添加一个空格。没有什么可以改变的。我试着用awk。请帮帮我。非常感谢。
您可以使用此sed:
$ sed -r '4,$s/^([^ ]*)/\1 /' file
060A 2012075 2014035 27.0361 -80.3618 0.0090 Indiantown, FL, USA - - 0.
我使用来自的Theodros Zelleke的awk答案作为以下代码的模板:
awk'/[:digit:]/{OUT=substr($0,1)“.txt”};OUT{print>OUT}'/path/to/file
上述代码导致文件名由整个第1行组成,文件仅包括前2行,而不是完整的原始文件
我有数百个文件要根据每个文本文件第一行的位置号重命名。下面是我正在处理的文本文件的两个示例
文件1将变成“1000030.txt”
位置编号:1000030位置名称,状态
文本:文本
更多文本
更多文本
更
我有数据(data.csv):
我想用AWK(count.AWK)计算第三个元素为“s”或“c”的行数:
然后
但这是行不通的。其产出是:
0
0
这不是我所期望的。为什么?
$ awk -V
GNU Awk 4.1.0, API: 1.0 (GNU MPFR 3.1.2, GNU MP 5.1.2)
注意:我在cygwin上使用Awk。问题是您的目标字段嵌入了双引号,因此您也需要匹配它们,方法是在要匹配的字符串中包含它们-\-escape-:
awk '
BEGIN{FS=","; s
我有一个要求。
比如说,下面我在file1.txt文件中输入了
start
asfsafsf
faffsa
gygfyt
end1
dddadd
start
afsaf
safsaf
asdasd
start
asda
DD
end2
aasfsa
afaf
start
dada
afaf
asfs
end3
fafaf
我需要捕获start和end3之间的字符串,然后按预期输出
start
dada
afaf
asfs
end3
如果我需要捕捉end2,那么我需要输出为
start
asd
我有一个日志文件,在其他100行中可能有以下几行
hosta: Info: Tue Nov 25 19:44:39 2014>
User jwayman at position 170.198.3.141 disconnected
hosta: Info: Tue Nov 23 19:44:39 2014>
User jho at position 170.198.3.141 disconnected
hosta: Info: Tue Nov 26 19:44:39 2
数据文件内容
1234t56
78t7891
这里的分隔符是t
我需要输出为
3
(我想要统计的三个对象是1234,5678和7891)
它与grep一起工作,即计算分隔符的出现次数,然后添加一个分隔符将给出行数
但是它的性能障碍awk中的任何东西都可能有类似的帮助:
echo "1234t5678t7891" | awk -F't' '{print NF}'
如果正在处理文件内容,您可以将其更改为:
awk -F't' '{print NF}' File
这里,我们将分隔符设置为't
我有一组名为dataX.dat的文件,其中X是一个在一段时间间隔内变化的数字。我试图用awk获取其中每一行的第七行,并将它们带到一个新文件,但它只获取了最新的一行(具有最高X:
awk 'NR==7' data*.dat
仅显示data128.dat的第七行,即最后一行的128。为什么要这样做?我应该如何做才能占用所有文件
先谢谢你
编辑:系统按字母顺序排列文件,128恰好是第一个文件(没有其他的X编号以1开头),因此它实际上只接收第一个文件。尝试以下操作:
for file in *
do
文件中有变量${world}
如何将${world}更改为{world}您到底想要捕获什么?字面意思是xx?这很容易:
echo '${xx}' | sed "s/\${xx}/\'{xx}\'/"
但我怀疑这不是你想要的
printf 'hello ${world}\n ${he} l ${lo} all\n' | sed "s/\${\([^}]*\)}/'\1'/g"
给出:
hello 'world'
'he' l 'lo' all
由内而外:
[^}]*表示任何非}字符重复0
我正在尝试匹配文件2中的所有文件1名称,如果存在匹配项,则对其进行平均。匹配的字段是|符号前面的$5,平均值是匹配$4的$7的总和。谢谢:)
文件1
AGRN
CYP2J2
文件2
chr1 955543 955763 chr1:955543 AGRN-6|gc=75 1 2
chr1 955543 955763 chr1:955543 AGRN-6|gc=75 2 2
chr1 955543 955763 chr1:955543 AGRN-
我想从下面显示的日志文件中选取以'-----------read----------'开头,以'finish'结尾的行,同时,去掉重复的段落(只保留相同段落的最后一个匹配)
在日志文件中,段落有固定的开始行和结束行,但没有固定的中间行,因此我使用
sed-n-e/------------read------/,/finish./p“$input\u file\u name
拾取段落,但不能删除重复的段落(某些段落可能重复)
我尝试过使用sed-n“0、/----read-/、/finish/p”
下面是一个文件,如果用户名中的数字是奇数,如果名称中的第一个字符是元音,我必须使用awk或grep进行搜索
aaie1001:x:1:600:Alex:/home/scs/gr911/aaie1001:/bin/bash
abie1032:x:2:600:Mihai:/home/scs/gr911/abie1032:/bin/bash
acie1203:x:3:600:Andra:/home/scs/gr911/acie1203:/bin/bash
acie1203、abie1032、aaie
我试图在Geany文本编辑器中将文本与分隔符垂直对齐:
idxMathExpress (MathArcCos _) = 120
idxMathExpress (MathArcSin _) = 130
idxMathExpress (MathArcTan _) = 140
我希望这一块像这样对齐
idxMathExpress (MathArcCos _) = 120
idxMathExpress (MathArcSin _) = 130
idxMathExpress (MathA
我有一个以下格式的文本文件,字母表是用空格分隔的ID
OG1: A B C D E
OG2: C F G D R
OG3: A D F F F
我想从每组中随机抽取一个id,如下所示:
OG1: E
OG2: D
OG3: A
我试着用
shuf -n 1 data.txt
这让我
OG2: C F G D R
awk救援
$ awk -v seed=$RANDOM 'BEGIN{srand(seed)} {print $1,$(rand()*(NF-1)+2)}' file
OG
我有一个类似于
31 text text t text ?::"!!/
2 te text 32 +ěščřžý
43 te www ##
它是从uniq-c
我需要买点像这样的东西
text text t text ?::"!!/
te text 32 +ěščřžý
te www ##
text text t text ?::"!!/
te text 32 +ěščřžý
te www ##
我试着用类似于
a=$1;
$1=""
$0=substr($0,
我知道这是一个简单的问题,但awk命令确实在融化我的大脑。我有一个制表符分隔的文件“inputfile.gtf”,我需要从中提取一列并将其放入一个新文件“newfile.tsv”中。我一辈子都想不出使用awk执行此操作的正确语法。以下是我尝试过的:
awk -F, 'BEGIN{OFS="/t"} {print $8}' inputfile.gtf > newfile.tsv
也
这两个都给了我一个空文件。在我搜索的每一个地方,人们似乎都有完全不同的方法来完成这个简单的任务,而在这一
在下面的awk中,是否有一种方法可以只处理图案#CHROM下的行,但在输出中打印所有行。我遇到的问题是,如果我忽略所有带有的行,它们会在输出中打印,但没有的其他行会被复制。在我的数据文件中有数千行,但只有下面的oone格式由awk更新。谢谢:)
文件制表符分隔
##bcftools_normVersion=1.3.1+htslib-1.3.1
##bcftools_normCommand=norm -m-both -o genome_split.vcf genome.vcf.gz
##bcfto
我有一些日志要过滤。日志末尾包含一个IP&UID。我只想复制具有特定UID值的行以及高于该值的任何内容
日志:
例如,我只想复制包含2000以上任何值的行,并将其移动到单独的文件中。我尝试了很多awk命令,但都没有成功
awk -F: '{if ($3 > 2000) { print $1 ":" $3 } }' log.txt > newlog.txt
作为一个过滤器,您所需要的只是测试。测试的真实性或虚假性将通过在“真”上打印而导致过滤
例如:
$ echo "1.2.4.5
下午好
我想对awk中的每一列和每一行进行累计
我的档案是:
1234
2 5 6 7
2 3 6 5
1 2 1 2
我想:每栏
1234
379911
510516
6121618
6121618
我想:每行
13599
27132020
2 5 11 16
1 3 4 6
我计算了每列的总和,如下所示:
awk '{ for (i=1; i<=NF; ++i) sum[i] += $i}; END { for (i in sum) printf "%s ", sum[i]; prin
我想筛选一个文件,这样我就可以获得在第1列中匹配而在第2列中不匹配的行。在以下示例中:
00b27c71-a833-4605-9fb3-a2714ac98092 ENST00000352983.6 157 60 16
00d77e65-466e-4fe6-ad0f-bc6b3f44af75 ENST00000367142.4 130 12 4
00d77e65-466e-4fe6-ad0f-bc6b3f44af75 ENST00000367142.4 8 6
我有几个大文件被意外地附加了正确的信息(即,最新的数据w/头是正确的,而顶部信息是不正确的),因此有一个重复的信息:
H1 H2 H3 DATA SHIFT PROD VAL
12 12 13 8189 2 392 10
12 13 12 8199 3 281 11
...
...
H1 H2 H3 DATA SHIFT PROD VAL
12 12 13 8189 2 392 10
12 13 12 8199 3 281 15
...
...
如果我只想删除标题和与第一个标题相关的信息,我将
我在文件中有一个特定列,其中包含如下字符串:
1.1*1024
1.0*1024
1.1*1024
...
$ cat file
[[ ]] toto1.mp4 2019-04-16 22:11 1.1*1024
[[ ]] toto2.mp4 2019-04-16 21:41 1.0*1024
[[ ]] toto3.mp4 2019-04-16 22:40 1.1*1024
[[ ]] toto4.mp4 2019-04-16 22:09 1.1*
我有一个文件,看起来像:
text
text
moretext
evenmore text
sometexthere
text
我想删除第一个空行之后的所有内容。我希望我的输出是:
text
text
moretext
evenmore text
但我不知道该怎么做 您可以很容易地使用
你可以很容易地用
欢迎来到堆栈溢出。这也是一个面向专业和热情程序员的问答页面。请在问题中添加您自己的代码。你至少要展示你自己为解决这个问题所做的研究。请看这是否回答了你的问题?欢迎来到堆栈溢出。这也是一个
我是awk新手,希望使用awk更改字符串中数字的浮点数精度(在我的文件中是第10列):
例:
我想要的是:
Name_1:0.12@123
Name_1:0.12@123Name_2:0.3@456
Name_1:0.123456@123Name_2:0.333564@456Name_3:0.25@895
我可以有任意数量的“姓名”
我是这样想的:
awk '{$10=gensub(/(-?[0-9|.])+@/, sprintf("%.2f", "&&q
我有这样一个文件(由\t分隔):
我想删除第一列中包含gene2和gene4的列。我知道我可以使用sed或awk和a搜索多个模式,但实际上我的文件有数千行,我想删除数百列(我有一个变量,其中包含我想搜索的模式)。如何在不必手动编写所有模式的情况下执行此操作
模式变量:
gene2
gene4
预期产出:
gene1 previous name1
gene3 previous name3
我只想grep第一列,因为单词gene2(或*gene4)可能在第三列。使用grep:
cat >
我正在制作一个LaTeXbeamer演示文稿,我想在每个\item标题下添加一个注释部分,该部分只复制其文本。比如我有
\begin{frame}{Frame Title}
\begin{itemize}[<+->]
\item Einstein was a clever man.
\item My favorite equation is,
\begin{equation}
E = m c^2.
\end{equation} wher
如何按$NF | sort-u排序,然后打印整行
原始数据:
尝试:
在下面尝试,但不起作用
$ awk '{print $NF;$0}' hwversion
或
预期:
如果您知道字段的数量,只需按最后一个字段排序即可
排序-u-k9,9 HW版本
如果您不知道字段的数量,但希望它是一致的,您可以让Awk打印字段的数量,并使用它
nfields=$awk'NR==2{print NF;exit}'hwversion
排序-u-k$nfields,$nfields版本
我跳到了第二行,因为第一
上一页 1 2 ...
6 7 8 9 10 11 12 ...
下一页 最后一页 共 152 页