如何返回文件的日期?
像这样的东西不管用,也很难看
ls -l tz1.sql | awk '{print $7$6 $8}'
7Jun10:00
使用逗号分隔字段:
ls -l tz1.sql | awk '{print $7, $6, $8}'
当awk读取输入行时,该行在字段分隔符FS上拆分。
因此,在打印行时,必须将这些字段分隔符放回原处。
“,”代表那些FSs
编辑:
如果要将变体与Ignacio Vazquez一起使用,请尝试:
stat -c "%y" s.awk | cut
好的,我正试图写一个简单的awk来清除一些csv文件中的逗号
下面是几行示例数据
PRD,,,,PEWPRV100D,,,EWPRVU457D,,,,12/31/2011 10:09:14 PM,,,,,5,,,4,,
PRD,,,,PEWPRV100D,,,EWPRVU250D,,,,12/31/2011 10:09:23 PM,,,,,67,,,69,,
PRD,,,,PEWREF100D,,,EWREFU045D,,,,12/31/2011 10:09:40 PM,,,,
考虑:
$ echo line1 | awk '1END{ print "line2"}'
line1
line2
注意1和END之间缺少空格。这是标准,还是我实现awk的一个怪癖?将操作与以下地址分开的语法规则是什么?您可能使用的是旧版本的awk。在原始的awk语言中,不需要在同一行上用分号分隔规则。添加它是为了与操作中对语句的处理保持一致
我发现:
这适用于我使用GNU Awk 4.0.1的情况:
$ echo line1 | awk '1; END { print "line2" }'
假设以下输入:
$ cat example
{many lines of text}
Col1 Col2 Col3
foo bar 2
bar baz 3
baz bar 8
bar foo 0
foo baz 9
baz bar 3
{many more lines of text}
以下两个awk代码段解析出我要查找的数据:
cat example | awk -v 'RS=\n\n' '/^Col1 /' | awk '$2 == "bar"
我有一个输入文件,其内容不断更新
对于不同数量的字段,我试图打印到一个新文件
每行输入文件的倒数第二个字段:
awk“{print$(NF-1)}”输出文件
错误:
和
awk:(FILENAME=-FNR=2)致命:尝试访问字段-1
我需要帮助。提前感谢对于没有字段的行(空行或全部空白)NF为0,因此计算结果为$(-1)。此外,如果只有一个字段,您的代码将打印$0,这可能不是您想要的
awk 'NF>=2 {print $(NF-1)}'
应该是awk'NF>1{print$(NF-1
无法100%确定如何做到这一点。我所拥有的东西不合算
awk -F, '{array[$1]+=$2} END { for (i in array) {print i array[i] }}' gaaa
下面是一个砷化镓的例子
acic 4
acgic 56
acpdc 183
acic 1677
acpicvp
acsis 23
hidr 4
hidr 1133
aggr 24
预期结果将是:
acic 1681
acgic 56
acpdc 183
acpicvp
acsis 23
不知什么原因我不能得到这份工作?我想比较前一天和当前日期的文件
awk 'FNR==NR{a[NR]=$2;next}{print $1,$2-a[FNR]}' Router_Evi_`(strftime("%y-%m-%d", systime()-86400))`.txt Router_Evi_`(date +"%y-%m-%d")`.txt > temp_plus_minus.txt
谢谢您对awk脚本和shell的$(..)或
`...`
您发出的命令是:
awk '....'
我正在使用gnuplot绘制一个包含许多列的文件:
plot for [i=2:119] "./file.dat" using 1:i w l lt 9
它工作得很好,但我无法编辑它以打印移动的行。
我想打印这个,其中N是移位值
plot for [i=2:119] "./file.dat" using 1:$i+N w l lt 9
但是我收到了错误(美元上的“^”):
解决方法是使用AWK,但在这种情况下,我也会遇到一些错误。我发现,要记住如何对存储为变量的列号执行操作,或者如果
嗨,我想解析一些数据,对于某些值,在保存到CSV之前将其替换为字符串
Sample Lines
============
Time,11,Name,Jack,Cost,1300,Paid,1
Time,13,Name,Tim,Cost,1300,Paid,0
grep & cut (&awk)
============
grep -i "Time,\d+,Name,\w+,Cost,\d+,Paid" | cut -d, -f2 -f4 -f6 -f7 | awk (repla
我想知道如何在iperf中只显示带宽值。我使用grep,但它显示整行,如下所示:
iperf -c 10.0.0.1 -i 1 -t 100 | grep -i --color Mbit/sec
结果是
[3] 0.0 - 1.0 sec 128 Kbytes 1.05 Mbits/sec
[3] 1.0 - 2.0 sec 128 Kbytes 11.5 Mbits/sec
[3] 2.0 - 3.0 sec 128 Kbytes 31.5 Mbits/sec
我想要的是
1.05
11.
我试图获取一个有1000多行的文件,对于每一行,我想计算各个字段出现的次数。因此,文件中几行的示例如下所示:
0/0 0/0 0/0 0/0 0/0 0/0 0/1 0/0 0/0 1/1 0/0 0/1
0/1 1/1 0/1 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0
我的代码是:
cat
我不熟悉awk和sed。我有以下几行,如果它与模式不匹配,我想将该行向上移动
文件:
。。。事情就是这样
要使用模式匹配“公司名称”。如果该行没有“公司名称”,请将该行上移
期望输出:
company name, address line, city, state, zip, extra info
company name, address line, city, state, zip, extra info
company name, address line, city, state, zi
我想问一个关于我之前发布的问题的后续问题:
我正在试图找出当我有几个不匹配的值时如何打印NA
File1
rs1 AA 10
rs2 BB 20
rs3 CC 30
rs4 DD 40
File2
rs1 QQ TT UU
rs3 RR WW
rs4 ZZ
Desired output
rs1 AA 10 QQ TT UU
rs2 DD 20
我有以下awk命令:
awk -v RS=! -v ORS= '/abc/ && /def/ {print FILENAME;}' files
这将查找文件中的每个文件,并用“!”分隔文件中的每个记录,然后将记录与“abc”和“def”匹配。然后,上面的代码将打印文件名。如果删除{print FILENAME},如果匹配,它将打印整个记录
文件看起来像:
abc1
bce
bcd
def
!
abc2
bce
def
!
我想打印出文件名和与“abc”匹配的行。例如:
fil
回答时,我写了以下awkcode
% cat mark_blocks
$1<count { print count; print "";
for(i=1;i<=count;i++) print l[i]; }
# executed for each line
{ l[$1] = $0; count=$1}
END { print count; print "";
for(i
标签: Awk
concatenationend-of-line
当fiel的数目与给定的数目不匹配时,我尝试连接两行
以下是输入文件的示例:
1, z
2
3
4
5, w
6
7
这是我想要的结果:
1, z 2
3
4
5, w 6
7
我尝试了以下代码:
awk '
{
if (NF!=1){
first=$0
getline
print first" ",$0}
else {print $0}
}' $1
以下是我得到的:
2 z
3
4
6 w
7
我不明白为什么我先得到下一行,然后只得到第一行的第二个字段
标签: Awk
splitpattern-matchingconditional-statementsfind-occurrences
如果需要,请帮助修改标题和帖子,谢谢
简言之,我希望首先在第一个字段中使用唯一值对行进行分组,然后在基础行组的另一个字段中累积特定值的出现次数。如果出现次数的总和不符合自定义阈值,则应忽略组中的行
具体来说,有了投入
111,1,P,1
111,1,P,1
111,1,P,0
111,1,M,1
222,1,M,1
222,1,M,0
333,1,P,0
333,1,P,1
444,1,M,1
444,1,M,1
444,0,M,0
555,1,P,1
666,1,P,0
所需的输出应为
11
我在一个文件中有很多路径,如果有.jpg、.pdf,我需要使用特定字符串更改路径
例如:
我现在有这样的台词:
images/2015/somename.jpg
images/2012/somefile.pdf
2015/2012年可能是1997年或2010年等-随机年份数。
我想用sed(如果可能的话)这样更改这些行
images/somename.jpg
files/somefile.pdf
我这样试过:
echo“images/2015/image12345.jpg”| sed的/im
我有两个文件new.csv和remove.txt。我使用AWK从生成的任何新csv文件中删除主文件。这些文件是:
$ cat new.csv
james,smith,bronx,2025555551
adam,stephenson,brooklyn,2025555552
anthony,jackson,queens,2025555553
mary,young,astoria,2025555554
marsha,peterson,madison,2025555555
angie,huff,be
我有一个文本文件,有3列,像这样
2010-01-03 11:00:00 -134
2010-01-03 11:01:00 -131
2010-01-03 11:02:00 -128
...
现在我需要以秒为单位的时间步长,而不是现有的时间步长
如何创建一个介于$2和$3之间的新列,填充递增的值(0、60、120…),直到文件结束?根据您的声明和数据,您可能需要:
awk '{ print $1, $2, i*60, $3; i++;}' orifil
我在一个目录中有大约175个制表符分隔的txt文件。我对第一列感兴趣,我想从每个文件的第一列中删除所有重复项,然后将它们作为列打印到新的txt文件中
#this removes all duplicates in column 1 of myFile.txt
awk '!x[$1]++' myFile.txt
#this copies all coulmn 1 from every file and paste them as columns in a new file
#!/bin/b
我正在用一个独特的数据集制作热图。数据集由一个符号组成。
下面是我的dataset 1q.txt的示例
one two three
2009 0/0 1 0/0 1 0/0 1
2010 0/0 1 0/0 1 0/0 1
2011 0/0 1 0/0 1 6/179.5 1
我试图使用awk从第一个CSV文件“map.txt”中查找两列(col1=key,col2=value)的值,然后在用文件1的col2替换相同的col3时,使用第二个文件“textile.txt”的col3作为键
示例文件:
map.txt
a,apple
b,pear
c,peeps
d,gingersnaps
e,goop
1,This is one,a
2,This is two,b
3,This is three,c
4,This is four,d
5,This is five,e
我有问题。首先,我将xlsm转换为tsv。一列有\n分隔字符串,如果我使用xlsx2csv工具,我从这一行收到三行
F.E.:
XLSM文件:
> 2 LO rofl string_A
> 1 HI lol "string|
> string_2|
> string_3"
在.TSV文件中
> 2 LO rofl string_A
> 1 HI lol "string|
> string_2|
我有一个巨大的日志文件test.log,它包含50个字段
我想使用awk匹配字段20中的数字“0”,仅当它匹配0时,才打印整行
为了进一步加强这一点,我想匹配2个或更多的领域,如果他们匹配,然后打印整行
请帮忙:)
B
其中$20表示字段20,$21表示字段21。谢谢foundart,如果进一步说,如果字段20不是'0',我想打印整行怎么办?@user2301195如果等于的语法是=,你真的无法理解不等于的语法?
awk '$20 == 0' your-file.txt
awk '$20 ==
我正在尝试计算时间段之间的记录数
doa
19560227
19560429
19571001
19571201
19580301
.
.
.
.
20170327
20170401
时间段介于日历年和日历年之间
19560101 to 19561231
19570101 to 19571231
.
.
.
20170101 to 20171231
每当日期发生变化时,应增加变量。
我尝试了以下代码,但没有得到结果
awk '{
doa=$1
cnt=1956
for (i=1
我想知道如何找到并将EPOCH时间从.CSV转换/替换为人类可读的格式。CSV包含数千行,每行的格式结构如下所示
54383,1,A9,6,13,0600,0,”,0,014922674758192.168.215.52,FA:C1:3F:00:43:97149264787,0,0,0,”
因此,如果我阅读正确,我们的目标列是13和16。withgawk:
awk -F, -v OFS="," '{$13=strftime("%c",$13);$16=strftime("%c",$16)};1
我需要在awk中的字符串末尾添加破折号(-)。破折号的数量是动态的(可以是0到1024之间的任何数字),因此不能硬编码。如何在awk中实现它
在中,可以这样实现:
function gen_chars(N) { s=""; for (i=1;i<=N; i++) {s = s "-"}; return s; }
函数gen_chars(N){s=”“;for(i=1;i使用所需的字符创建一个长焊盘,并切割所需的长度,例如
awk -v size=5 'BEGIN {s="-"; for(
我有两个文件。一个文件是包含多列的选项卡分隔文件。另一个文件是基因名称列表。我必须只提取那些具有文件2中列出的基因的行在文件1中。
我尝试了以下命令,但它提取了所有行:
awk 'NR==FNR{a[$0]=1;next} {for(i in a){if($10~i){print;break}}}' File2 file1
文件1:
输入行ID色度位置链参考碱基Alt碱基样本ID HUGO符号序列本体蛋白质序列
3 VAR113_NM-02_肿瘤_DNA chr1 11082255+G T
我试图提取每个作业的最后一行(例如,行中的2或6/第一位数字),该行应包含文本“LOADER\u PROCESSED\u COUNT”。
使用下面的代码,我可以得到最后一行字符串,如下所示。但是,我需要打印每个作业的最后一行
你能就这件事给我建议吗
@代码
awk '/LOADER_PROCESSED_COUNT/ {a=$0} END{print a}' tempResult
@结果
6/Loader.log/LOADER_PROCESSED_COUNT/99999
@输入文件(te
我有一个名为“text.bz2”的文件,其中包含许多我想要处理的记录。我有一个脚本,它成功地处理了一个标准文本文件中的所有数据,并将结果输出到另一个“results.txt”文件,但我当前运行的命令将bz2文件的所有结果输出到命令提示符(与cat一样),创建了results.txt文件,但它是空的
这是我正在运行的cammand:
bzip2 -dc text.bz2 | awk ... '
'
> results.txt
解压缩的bz2文件中的数据格式为:
field1=xxx;fie
我不是一个很好的awk用户,但在谷歌搜索了几次之后,我决定它将最适合我正在尝试做的事情……唯一的问题是,我无法让它工作。我试图打印出sudoers的内容,同时在sudoers条目之前插入服务器名($I)和逗号,因为我将它定向到一个.csv文件
egrep '^[aA-zZ]|^[%]' //$i/etc/sudoers | awk -v var="$i" '{print "$var," $0}' | tee -a $LOG
这是我得到的输出:
$var,unixpvfn ALL = (ro
假设我在一个文件(file.txt)中有以下数据:
我想在字段1($1)前面加一个“A”,在字段3($3)前面加一个“B”。我的awk脚本会是什么样子?我试过:
awk -F "|" -OFS='|' '
{
$1 = "A"$1
$3 = "B"$3
print;
}
' file.txt
但这不起作用。结果是:
Aone|two|three|four|five|six B
对不起,我不是这里的优秀awk程序员。看来我已经解决了。这与输出字段分隔符(O
我有两个文件:
文件1:
文件2:
hola
l m n o p q
现在我想通过忽略文件2的标题将它们合并到一个文件中,如下所示:
a 1 2 3 l m n o p q
b 1 2 3
c 1 2 3
d 1 2 3
有人知道怎么做吗
$ awk 'NR==FNR{if(NR>1)a[NR-1]=$0;next}{print $0,a[FNR]}' file2 file1
a 1 2 3 l m n o p q
b 1 2 3
c 1 2 3
d 1 2 3
简要说明
我正在尝试打印file1中与file2匹配的行$1具有存储在数组c中的值,然后在file2$1:$2。这是用于匹配行的第一个标准,但不是唯一的标准
标签: Awk
countmultiple-columnsrows
嗨,我对这种类型的输入数据有以下问题:
包含以下列的输入文件:
文件1(原始文件)
我尝试使其将长列与下一行对齐,这是在以下代码的帮助下产生的:
awk '{for (i = 1; i <= NF; i += 9) print $i, $(i+1), $(i+2), $(i+3), $(i+4), $(i+5), $(i+6), $(i+7), $(i+8), $(i+9)}' file1
@目标是根据您的想法使其输出类似这样甚至更好,但仍然保持相同数量的处理行
7 LINE_A G_V
我有一个包含以下内容的文件格式:
1 6 8
1 6 9
1 12 20
1 6
2 8
2 9
2 12
2 20
2 35
如果在下一行中找到编号(从第2列或第3列,但不是从第1列),我想删除所有行,无论它是在第2列还是第3列,包括找到初始编号的行
我应该将此作为输出:
2 35
我试过使用:
awk '{for(i=2;i<=NF;i++){if($i in a){next};a[$i]}} 1'
awk'{for(i=2;i请您尝试以下内容
awk '
我遇到了awk的以下行为,这让我非常困惑:
echo "" | awk '{print 15}'
输出
15
13
但是:
输出
15
13
用013、0013、0105和0130替换015分别得到11、11、69和88。浮点数按预期工作,带或不带前导零
我观察到GNU Awk版本3.1.7、4.0.2和4.1.3的这种行为
有人能理解这一点吗?预期的015被视为八进制值
echo "" | awk '{print 015}' ##Octal
13
echo "" | awk '{pr
在此处输入代码大家好
我有一个数据框,例如:
我有一个文件,例如:
scaffold_1_1 X 2 2
scaffold_24_0 X 9 2
scaffold_15 X 2 2
IDBA_scaffold_30_1 X 2 317
scf7180005161000_2 X 1 2
这个想法就是简单地删除第一个名字中所有名字的最后一个数字部分
但有三种类型的脚手架名称:
scaffold_number0_number1
scaffold_
我正在尝试比较两个不同的文件,例如:
文件1:
CALL AA
CALL AB
CALL AC
文件2:
00 AB n
01 AA o
02 AC o
我期望的结果是
输出:
AA 01 o
AB 00 n
AC 02 o
如何在不更改第一个文件的顺序的情况下获得此文件?(最好是在awk中)提前感谢您。更改自
到
输出:
AA 01 o
AB 00 n
AC 02 o
现在不带空列的输出:
AA 01 o
AB 00 n
AC 02 o
AA 01 o
AB 00 n
AC 02
我有一个csv,我正在使用awk脚本进行翻译。
其中一个字段有需要删除的空白-但是,我正在使用的当前函数不起作用
grnd_tack_number = gsub(/ /, "", $13)
输入=487 060210996314
期望输出=487060210996314
当前输出=5我建议尝试使用此代码示例进行调试
{
grnd_tack_number = $13;
print grnd_tack_number;
gsub(/ /, "", grnd_tack_numb
我有一个长字节序列形式的输入文件,中间有一些注释。我在底部提供了一个例子
我一直在gawk中寻找一个简单的单行程序,只提取和打印一些行,这在一开始很简单:
gawk '$4==01' input.txt
当输入文件中的注释行包含数字“1”(不带前缀0)并提取两行时,此操作失败
如何改进一行代码,使“01”匹配而“1”不匹配?
输入示例:
00000.000 00 3E 01 09 87
00000.000 57 3F 00 09 87
// Total Errors: 1
期望输
我有我的阵列:
array = [1:"PLCH2", 2:"PLCH1", 3:"PLCH2"]
我想在array上循环,以创建唯一值的新数组unique,并获得:
unique = [1:"PLCH2", 2:"PLCH1"]
我怎样才能做到这一点
编辑:根据@Ed Morton的请求,我在下面展示了我的数组是如何填充的。事实上,这篇文章是我上一篇文章的关键解决方案
在我的文件.txt中,我有:
PLCH2:A1007int&PLCH1:D987int&PLCH2:P97
标签: Awk
matchmultiple-columns
大家好,刚刚在匹配中遇到了困难,在论坛上尝试了几个匹配提示,但我无法应用其中任何一个,因为我需要将file1中的file2列$1、$2、$3与列$1、$2、$3进行比较,如果存在匹配,只需打印file1中的剩余列以及file2中的列
欢迎提供有关awk代码说明的任何帮助
这不起作用:
awk 'NR == FNR { a[$2] = $0; next } { line = a[$2] FS $1; for(i = 2; i <= NF; ++i) line = line FS $i; pr
目前,我使用以下行计算我的wifi连接(名为wlp4s0)的当前下载和上载速度:
awk '{if(l1){printf ("%.2f", ($2-l1)/1024/1024); print "MB/s"; printf ("%.2f", ($10-l2)/1024/1024); print "MB/s"} else {l1=$2; l2=$10;}}' <(grep wlp4s0 /proc/net/dev)
想知道如何根据$1和$2组合计算,从$3、4、5、6和$7计算1、2、3和4的出现次数
样本输入
Name,Date,XXX,YYY,ZZZ,AAA,BBB
ABC,19-10-2020,2,NA,4,3,NA
ABC,19-10-2020,NA,3,NA,NA,4
ABC,18-10-2020,1,NA,4,4,NA
ABC,18-10-2020,NA,3,NA,NA,4
CDE,19-10-2020,1,NA,4,3,NA
CDE,19-10-2020,NA,2,NA,NA,4
CDE,18
我编写了一个bash脚本,试图从两个文件中获取一个新文件
文件1:
1000846364118,9,369,9901,0,2020.05.20 13:20:52,2020.07.14 16:38:11,2021.03.14 00:00:00,U,2020.07.14 16:38:11
1000683648398,9,369,9901,0,2019.05.04 19:50:39,2019.06.23 14:27:17,2019.12.31 23:59:59,U,2020.01.01 01:25:0
我有一个文本文件。在这个文本文件中,我有从最低到最高的数字。
输入示例
[ Index 1 ]
1628 5704
32801 61605
71508 90612
102606
我想把这个文件分成两组,第一组我的数字在1到58050之间,第二组我的数字在58051到116100之间,所以当我的脚本找到一个大于58050的数字时,这个程序将写入[索引2]
预期产量
[ Index 1 ]
1628 5704
32801
[ Index 2 ]
61605
71508 90612
1
我有一个文件,我需要提取注释中带有/aa以及/*…*/的行,如下所示:
//This is me
/*Multiple line arguments
best way to
use*/
Store the variables.
Swap it
//Done
grep "//" file_name | sed 's/\/\///g'
我尝试过这样的单行注释,如下所示:
//This is me
/*Multiple line arguments
best way to
使用这些例子:
文件1:
rs12124819 1 0.020242 776546 A G
rs28765502 1 0.022137 832918 T C
rs7419119 1 0.022518 842013 T G
rs950122 1 0.022720 846864 G C
1 2 3 4 5 6 ...
下一页 最后一页 共 144 页