有时我会使用AWK来提取和/或反转数据文件中的列
awk '{print $2,",",$1}' filename.txt
如何使用Emacs Lisp执行相同的操作
(defun awk (filename col1 &optional col2 col3 col4 col5)
"Given a filename and at least once column, print out the column(s)
values in the order in which the c
我已将以下文件格式化为如下所示的格式-
DATA THROUGH 2001 YRS JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC ANN
BIRMINGHAM AL 58 8.1 8.7 9.0 8.2 6.8 6.0 5.7 5.4 6.3 6.2 7.2 7.7 7.1
HUNTSVILLE AL 34 9.1 9.4 9.8 9.2 7.9 6.9 6.1 5.8 6.7 7.3 8.1 9.0 7.9
MOBILE AL
这应该很简单,但我对awk脚本的流程有一个问题。我运行下面的脚本,它一次又一次地打印输出(如果我不得不猜测的话,我会说它为输入文件的每一行打印一次)。根据要求,这里有一些假输入:
[30000] (03/20 00:00:02.950):{0x2D90} Pattern1 5.0.3.57
[30000] (03/20 00:00:03.911):{0x2D90} Pattern2 5.0.3.57
[30000] (03/20 00:00:02.950):{0x2D90} Patter
我有下一个awk oneliner:
{dict[$2"@"$6]=($(NF-2)/($(NF-2)+$NF))*100 } END {for (a in dict) { printf "%s %d :" , a, int(dict[a]) }}
我需要的是,增加每个字典键组合的值
($(NF-2)/($(NF-2)+$NF))*100 " out of" $(NF-2)+$NF
所以我想让awk计算所有的数学运算,然后合成字符串并将其作为字典值。我已经尝试了一些空格和括号的组合,
我正在尝试编写一个小shell脚本,每小时运行一次,并返回过去一小时内发送电子邮件的所有用户和IP,以便我可以查找任何受损帐户
我通过以下方式获取所需数据:
grep "A=dovecot_login" /var/log/exim_mainlog | sed -e 's#H=.* \[##' -e 's#\]:[0-9]*##' | awk '{print $5,$6}' | sort | uniq -c
但我想将这些结果限制在前一个小时(因此,如果我在上午10点运行,那么结果将是从上午9点到
标签: Awk
Grep
command-line-interfacetail
不确定你是否能通过tail和grep做到这一点。假设我有一个日志文件,我想跟踪它。在调试模式下,它会输出相当多的信息。我只想grep获取与我的模块相关的信息,并且模块名称在日志中,如下所示:
/*** Module Name | 2014.01.29 14:58:01
a multi line
dump of some stacks
or whatever
**/
/*** Some Other Module Name | 2014.01.29 14:58:01
this should show
标签: Awk
scientific-notation
大家好,我有以下几句话:
A=3.5e30
B=4.345e40
(文件包含此符号中带有数字的列1.2345678D+10)
我得到的结果是:
3.168808781403E+02 29825999184755995994350665720659968 71343531834366140263241767594070376448 ... etc
如何使第二列和第三列具有与第一列相同的符号?即
而不是:713435318343636140263241767594070376448
我想要:7.
嗨,我有以下awk程序
问题是我不知道为什么它会抱怨“awk:–f”
awk:^无效字符'�' 在表达式“中,当我执行awk-f pdf.awk aodv1.tr
你们当中有谁在这方面比我聪明
开始{
recvdSize=0
起始时间=400
停止时间=0
}
{
事件=$1
时间=265.01美元
节点id=$29
包装尺寸=8美元
级别=$4
如果(级别==“AGT”&&event==“s”&&pkt\U大小>=512){
如果(时间=512){
如果(时间>停止时间){
停止时间=时间
}
我有一段代码:
gawk '{if (match($5,/hola/,a) && $6=="hola") {print $2"\t"$1"\t"$2"\t"$1"\t"$3} else if `(match($5,/(_[joxT]+\.[0-9]*)/,a) && match($6,/(_[joxG]+\.[0-9]*)/,b)) {print $2""a[1]"\t"$1""b[1]} else (match($5,/(_[joxT]+\.[0-9]*)/,a
我一直在尝试创建一个正则表达式,它只允许我处理文本文件中特定列的文本
例如:
John Milanos
Anne Silverwood
Tina Fastman
我知道awk-F'{print$2}'将打印所需的列,因此允许我将文本传输到第二个grep命令。但是,我的最终输出将只打印姓氏。我想打印整行,但只查找姓氏的模式
如果我跑步:
awk -F ' ' '{print $2}' listofnames.txt | grep -v 'wood'
我将以以下内容结束:
Milanos
我有一组包含以下信息的文件:
ID Score Other
ABR 0.98 NBNMSB
BCG 0.76 NBNMSB
CVD 0.6 NBNMSB
BCG 0.9 VSCVA
CVD 0.56 VSCVA
ABR 0.9 VSCVA
CVD 0.7 BAVSC
BCG 0.4 BAVSC
ABR 0.5
我在文件中有一组行,我想在输出后插入一个新行,内容与行相同,但不是uat\u reset\u fwd\u outputs而是Test\u sample\u data
[serverClass:UAT_SAI_Forwarder:app:uat_sai_inputs]
[serverClass:UAT_SAI_Forwarder:app:uat_reset_fwd_outputs]
[serverClass:UAT_TEST_Forwarder:app:uat_test_inputs]
我在~/Desktop/test/dummy.txt位置有一个文件,其中包含以下文本
[client]
clientName =
[servername]
testserver-1
dummy.txt文件应该在“clientName=”line的末尾用hostname-s的输出进行更新。如果您想在dummy.txt文件中附加命令hostname-s的结果,可以尝试以下操作:
awk -v hostname="$(hostname -s)" '$1=="clientName" {$3=hos
我试图使用awk将Classification字段NF+1的值替换为CLINSIG字段NF-1的值,如果该值为良性。我认为awk已关闭,但目前我得到一个空文件。怎么了
输入
Chr Start End Ref Alt Func.refGene PopFreqMax CLINSIG Classification
chr1 43395635 43395635 C T exonic 0.12 Benign VUS
chr1 43396414
我正在尝试打印所有可以包含相同单词的行两次或更多次
例如,使用此输入文件:
cat dog cat
dog cat deer
apple peanut banana apple
car bus train plane
car train car train
输出应该是
cat dog cat
apple peanut banana apple
car train car train.
我已经尝试了这个代码,它的工作,但我认为必须有一个更短的方法
awk '{ a=0;for(i=1;i&
我有这张桌子
0 56 56
0 45 100
0 70 80
60 90 90
0 100 200
0.1 200 300
在这个表中,我想通过以下公式计算col2和col3的值
awk取决于col1值:如果col1=60,停止并开始新的计算,并将值放在新的列上,比如说col4和col5
重述,基于和:
对于第1列中的值小于60的行,应将第2列和第3列中的值添加到单独的总和中。当行在第1列中的值为60或更高时,打印第2
我想抓取后面的部分,并将其与下面的字母字符串组合成一个制表符输出。我尝试了一些像cut-d*-f2awk这样的方法来营救
awk -F- '/^>/{k=$2; next} {print $0, k}' file
救命啊
awk -F- '/^>/{k=$2; next} {print $0, k}' file
使用GNU时:
sed -nE 'N;s/.*-([0-9]+)\n(.*)/\2\t\1/p' file
输出:
TATTGCACTTGTCCCGGCCTGT 395
我只需要合并一大堆文件,从第一个文件中去掉标题(第1行)
数据
以下是其中三个文件的最后三行(第1行:标题):
"START_DATE","END_DATE","UNITS","COST","COST_CURRENCY","AMOUNT"
"20170101","20170131","1","5.49","EUR","5.49"
"20170101","20170131","1","4.27","EUR","4.27"
"","","","","9.76",""
"START_DATE","E
我有一堆文件,它们的值(不必要的值)比字段名多,在它们上面我有一个我想保留的头
例如,使用包含以下内容的test_awk.txt文件:
My header is here
it can have several lines
data1 data2 data3
1,2,3,4
2,3,4,5
我想要的是:
My header is here
it can have several lines
data1,data2,data3
1,2,3
2,3,4
我尝试使用一个简单的awk命令,但只能抑制
我给出下面的命令来检查SAS数据集中的行数,但它输出数据集的60条记录,但数据集有247条记录
在unix命令中还有其他方法吗
UNIX命令:
awk'END{print NR}'/home/user/check.sas7bdat在SAS数据步骤中执行它怎么样?您可以使用NOBS语句获取行数
/* Test dataset */
data have;
a = 1;output;
a = 2;output;
a = 3;output;
run;
data _null_;
请告知我如何使用AWK将以下输入转换为上述输出:
输入
CREATE TABLE ${hf:XX_DB_XX}.test_${hf:XX_YYYYMMDD_XX}
AS
SELECT id
FROM ${hf:XX_R_DB_XX}.usr_${hf:XX_YYYYMMDD_XX}
WHERE year = ${hf:XX_YYYY_XX}
AND month = ${hf:XX_MM_XX}
AND day = ${hf:XX_DD_XX}
我有一个包含四列数据的文件,如下所示:
cluster-9 cluster-12 cluster-40 cluster-62
cluster-10 cluster-12 cluster-42 cluster-60
cluster-12 cluster-12 cluster-43 cluster-61
cluster-12 cluster-12 cluster-28 cluster-20
cluster-12 cluster-12 cluster-29 cluste
我有一个文件如下所示:
$ cat file_test
garbage text A=one B=two C=three D=four
garbage text A= B=six D=seven
garbage text A=eight E=nine D=ten B=eleven
我想遍历每一行,提取出在循环中使用的特定“变量”。如果一行没有变量,则将其设置为空字符串
因此,对于上面的示例,假设我想提取变量A,B,和C,那么对于每一行,循环将有以下内容:
垃圾文本A=1 B=2 C=3 D=4
我有这样的数据
>sp|Q96A73|P33MX_HUMAN Putative monooxygenase p33MONOX OS=Homo sapiens OX=9606 GN=KIAA1191 PE=1 SV=1
RNDDDDTSVCLGTRQCSWFAGCTNRTWNSSAVPLIGLPNTQDYKWVDRNSGLTWSGNDTCLYSCQNQTKGLLYQLFRNLFCSYGLTEAHGKWRCADASITNDKGHDGHRTPTWWLTGSNLTLSVNNSGLFFLCGNGVY
首先,我很抱歉没有给出一个我尝试过的例子,因为我真的不知道从哪里开始。这是一份SED或AWK的工作,这是我能得到的
如果出现以下情况,我想删除行:
第二个字符是第一列中的空格
倒数第二个字符是第一列中的空格
示例输入
John Smith|Chicago|IL
J Smith|Chicago|IL
Jane Brown|New York|NY
Jane B|New York|NY
预期产量
John Smith|Chicago|IL
Jane Brown|New York|NY
这些文件
我有一个场景,将CSV文件转换为HTML文件,然后使用Sendmail将HTML表格格式数据打印到邮件正文中。但输出的格式不正确
.csv文件中的数据如下所示
A1,ABC,BCD
A2,DEF,AB
用于将.csv文件转换为HTML文件的代码
awk 'BEGIN{
FS=","
print "MIME-Version: 1.0"
print "Content-Type: text/html"
print "Content-Disposition: inline"
print "&l
在一个文件中,我存储了一个坐标列表(参见左图)。
从那里我只想复制坐标(红色标记),并将它们放在另一个文件中
我使用COORD=`grep-B${I}'和END-COORD'${cpki_file}从文件中复制正确的部分。然后我尝试使用awk从COORD变量中提取所需的数字。它会输出文件中的所有数字,但会删除值之间的空格(图,右侧)
如何按原样书写红色标记的部分
当您开始使用grep、sed、awk、cut等组合时,您应该意识到您可以在单个awk命令中完成所有操作。在OP的情况下,这将完全相同
我有两个文本文件,我需要按位置相交
文件1
文件2
预期产量
cat02 2 xxx sss www
cat02 3 swe ede rrr
cat02 4 aqw ede efd
cat02 5 aws ede as
我尝试通过对两个文件进行排序来使用join,但无法获取位置能否请您尝试使用GNUawk中显示的示例编写并测试以下内容
awk '
FNR==NR{
start[$1]=$2
till[$1]=$3
next
}
$2>=start[$1] &&
我想搜索一个文件,查找符合给定条件的>=3个连续行的每个实例。我想为每个连续匹配块打印第一个匹配行的第1列和第2列,以及最后一个匹配行的第3列
例如,假设我在第4列中查找大于500的多行。以下是我想要的:
示例文件
Sc000000 2400 3600 602
Sc000000 3600 4800 835
Sc000000 4800 6000 718
Sc000000 6000 7200 416
Sc000000 72
我有一个文件,我必须在其中找到一个字符串并替换它。当我使用sed时,它会给我错误,因为replace字符串包含/
replace_string=6W4kngjd3c7oOShnG7iWYQpZVzr4S88G20fujmP7cdM1m5Gw550WfMD38DA4g6O4qxUIJJwt2OtLTRmh7vWz+AWQVmIMajk3OylEfR/X+afrD6YOeGLYHU6Ef4DYv/3x
sed -i -e 's|string|'$replace_string'|g' $FILEPA
我正在尝试读取一个CSV文本文件,并查找所有用户ID(第2列)以偶数(2,4,6,…)结尾的每周平均小时数(第3列到第7列)
输入示例如下所示:
Computer ID,User ID,M,T,W,T,F
Computer1,User3,5,7,3,5,2
Computer2,User5,8,8,8,8,8
Computer3,User4,0,8,0,8,4
Computer4,User1,5,4,5,5,8
Computer5,User2,9,8,10,0,0
Computer6,User7,
我正在尝试编写一个awk脚本,它检查某些条件并丢弃满足这些条件的行
具体条件是丢弃文件的前两行和以文本xyzy:开头的任何行。为此,我编写了以下代码:
awk '
NR < 2 {}
/^xyzzy:/ {}
{print}'
awk'
NR
我想选择第9列的绝对值小于500的文件行。列有时是正的,有时是负的
awk -F'\t' '{ if ($9 < |500|) {print $0} }' > output.bam
这到目前为止还不起作用。。互联网上的一个回合告诉我,要使用绝对值,我们应该增加
func abs(x) { return (x<0) ? x*-1 : x }
那我怎么把它和第9列的值放在一起呢??我不知道什么是正确的语法。对于快速一行程序,我使用以下方法:
awk -F'\t' 'functi
我的命令如下所示:
Red 8
Blue -29
Green 42
cut-f1 dummy|u FILE | sort | uniq-c | awk{print$2}| for i in$cat-;dogrep-w$i虚拟文件|
awk-v VAR=$i'{distance+=$3-$2}END{print VAR,distance}';完成
我想:
对于$1虚拟_文件中的每个单词,红色、蓝色和绿色-计算$3和$2之间的差异总和
要获得如下输出:
Red 8
Blue -29
我有一个PDB文件,简而言之,它看起来有点像这样
ATOM 1189 CA ILE A 172 4.067 0.764 -48.818 1.00 19.53 C
ATOM 1197 CA ATHR A 173 7.121 3.051 -48.711 0.50 17.77 C
ATOM 1198 CA BTHR A 173 7.198 2.978 -48.704 0.50 16
我无法让GNUawk(gawk)在正则表达式中区别对待大小写输入。环境是Win32
我升级到了Gawk4.1
我从记事本和记事本中将输入文件保存为ANSI ASCII和UTF-8 UNICODE++
我需要做什么?在调用gawk之前设置以下环境变量:
设置LC_ALL=C
设置LANG=C
标签: Awk
converterwekaarff
我有一个稀疏的matrix.txt文件,包含许多数字,但大部分是0。以下是此.txt文件的示例:
0.271178 0 0 0 0.538776 0-0.631228 0-0.501485 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.438643 0 0 0 0 0 0 0 0 0 0 0 0.287754 0 0 0 0 0 0 0 0 0 0 0-0.498918 0 0 0 0 0 0 0 0 0 0.475561 0 0 0 0 0 0 0 0 0 0
标签: Awk
Sed
text-filesdelete-row
我可以找到删除文本文件中以“1”开头的所有行的sed解决方案,以及删除文本文件中所有行的每隔一行的解决方案,但我想将两者结合起来。。在所有以“1”开头的行中,每隔一行删除一行,并保留其他不以1开头的行
因此,如果我有一个文本文件:
1, 1
1, 2
2, 3
3, 4
4, 5
2, 6
1, 7
3, 8
1, 9
4, 10
我希望输出为:
1, 1
2, 3
3, 4
4, 5
2, 6
1, 7
3, 8
4, 10
给你:
awk '$1=="1," && !(f
我有文本文件,每个文件都有一列数字:
2
3
4
我想将每行n复制几次,其中n是行中的数字,因此输出如下所示:
2
2
3
3
3
4
4
4
4
我发现的唯一示例使用了固定数量的n
我认为sed阅读每一行可能很好,但我还没有弄明白如何告诉sed使用每一行中的数字作为该行应重复的次数的值。在awk中这很简单:
awk '{for (i = 1; i <= $1; i++) print $0}'
您将获得相当丰富的输出,只要行中的第一个数字指示,就可以重复这些行。在awk中这很简单:
这个问题的目的是为常见问题提供一个健壮、灵活的解决方案
处理文本时的一种常见情况是需要将输入拆分为字段,操作字段,然后重新组合以进行打印。例如,给定此输入:
$ cat file
A 7 C 3
如果我们想确保每个单个数字都是.2f格式的,并且我们想保留字段前/后/之间的间距,那么我们可能会写入(使用GNU awk作为第四个要拆分的参数()):
最后一个循环是将数组展平为字符串进行打印,这对于许多awk脚本来说是常见的。有时分隔符存储在如上所述的不同数组中,有时
首先,我不是程序员,而是化学家。我开始做量子化学计算,我需要处理100万行长的文件中的数据。我尝试过这里找到的解决方案,但没有一个符合需要。问题是,计算的输出文件如下所示
43718,0.0040389517\Am,-1.7885800013,-0.6239343718,-0.0040389517\Versi
on=AM64L-G09RevD.01\State=13-AU\HF=-4237.9263963\S2=43.283985\S2-1=0\
S2A=42.176337\RMSD=5.586
因此,我有一个日志文件,其中包含如下条目:
[STAT] - December 11, 2017 13:16:05.360
.\something.cpp(99): [Text] Code::Open Port 1, baud 9600, parity 0, Stop bits 0, flow control 0
[STAT] - December 11, 2017 13:20:24.637
.\something\more\code.cpp(100): [log]
fooBarBaz[32]
我在一个文件中有以下格式的数据
id : 315,abcid :,abcname :,abcrole :,abctest :,abcsts : Active,abcqwe :
id : 316,abcid :1234 ,abcname : Test,abcrole : No,abctest : 2345,abcsts : Active,abcq
我正在尝试处理以下格式的文件内容:
this1,EUR
that2,USD
other3,GBP
this1(EUR),that2(USD),other3(GBP)
对于此格式:
this1,EUR
that2,USD
other3,GBP
this1(EUR),that2(USD),other3(GBP)
结果应该是一行
到目前为止,我已经提出了一系列运行良好的命令:
cat myfile | sed -e 's/,/\(/g' | sed -e 's/$/\)/g' | tr '
我有一个csv文件,有11行,如下所示:
Order Date,Username,Order Number,No Resi,Quantity,Title,Update Date,Status,Price Per Item,Status Tracking,Alamat
05 Jun 2018,Mildred@email.com,205583995140400,,2,Gold,05 Jun 2018 – 10:01,In Process,Rp3.000.000,Done,Syahrul Addres
我想查找并删除在特定位置具有特定长度的特定字符串的所有行
我的数据集中的一行看起来像这样:
STRING 1234567 1234567 7654321 6543217 5432176
注:
条目的字段宽度为8
标识号可以在同一行中重复
标识号可以在不同的行上重复,但在不同的位置-不应删除这些行
在本例中,我希望找到包含“1234567”的行,这些行位于第17列,跨越到第24列(即第三个字段),并将其删除。我如何使用sed或awk实现这一点
我使用了以下内容,但它删除了我要保留的行:
我有一个带有数字的文本文件,我显示了其中的一部分:
4194369
4194376
4194383
4194377
4194389
4194394
4194399
4194395
4194402
4194403
4194407
我想将文件中的两个连续数字连接在一起,以下代码为我的作业,除了不打印最后一行外,代码的输出为:
awk '{printf $0 (NR%2?",":"\n")}' file.txt
4194369,4194376
4194383,4194377
4194389,4194
我正在尝试将这个awkscript转换成python,这里有一段我不熟悉的语法。我知道else语句后面的部分正在设置空间填充以输出到文件,但是if/else让我感到困惑
if (substr($36,1,1) ~ /^[0-9]+$/) {
C = $36;
CLen = length($36);
}
else {
C = substr($36,2);
CLen = length(C);
}
CPad = 6 - CLen;
for (i = 1; i &l
标签: Awk
Sed
newlinetext-processing
假设我的输入文件es服务有以下几行:
如果上述文件中不存在模式key2=value2,则将其添加到key1=value1之后
因此,该文件现在应该具有:
为了实现这一目标,我提出了以下建议:
if ! grep -qxF 'key2=value2' es-service;
then sed -i "/key1/a \n# Comment 2\nkey2=value2" es-service
fi
问题是/a没有插入新行之后的第一行\n。因此,我最终得出以下结论:
key1=value1
n
我有一个以制表符分隔的文件,看起来像这样,有5列
temp1 56 09 34,54,65,6 file1
temp2 45 23 4,55,11,7,8,4,7 file2
temp3 123 56 0.01,0,50,4,4,4,6,7,1,3,44,67,8 file3
temp4 11 56 0.006,0.006,0.006 file4
temp5 10 123 0.00001,0.005,0.004 file5
我
上一页 1 2 ...
7 8 9 10 11 12 13 ...
下一页 最后一页 共 152 页