正如我在awk中所知道的,$1和$2引用文件的第一个和第二个字段。但是$1和$2可以用来引用变量的第一个和第二个字段吗。。这样,如果会话=5,则存储在变量中。那么,我想要1美元,指的是“会话”,2美元指的是“5”。多谢各位
输入文件
代码
细节
我将通过xargs传递我从第一个获得的输出,并通过管道将其传输,然后在xargs中的“name”变量中读取行。。现在,我的$1应该对应于xargs的第一个字段,这是我的查询
输出
为什么不试试全awk解决方案呢?更简单的是:
awk -F "=" '$1
我使用以下代码从文本文件中提取蛋白质残基
awk '{
if (FNR == 1 ) print ">" FILENAME
if ($5 == 1 && $4 > 30) {
printf $3
}
}
END { printf "\n"}' protein/*.txt > seq.txt
当我使用上面的代码时,我得到了以下输出
>1abd
MDEKRRAQHNEVERRRRDKINNWIVQLSKIIPDSSMESTKSGQSKGGILSKAS
我有一个文件:
AA jeden
BB dwa
CC trzy
DD cztery
EE piec
FF szesc
to ttttttt
GG siedem
HH osiem
II dziewiec
JJ dziesiec
JJ jola
EE ela
BB baska
FF flora
II irga
AA adam
to llll
DD darek
CC celina
HH hela
GG gosia
此命令打印:
$ awk '{ count[$
我举两个例子:
1.
$echo“Lorem ipsum dolor sit amet”{gsub(/L[^r]r/,”);print}
em ipsum dolor sit amet
2.
$echo“Loorem ipsum door sit amet”{gsub(/L[^r]r/,”);
打印}'
Loorem ipsum dolor sit amet
为什么第二个例子与第一个不一样
在第一个示例中,[^r]的记录被视为单个字符?是因为删除了一个“o”?L[^r]r匹配L,后跟任何非r的字
我想转换一个文件vel.xvg
0 0.303345 0.0430715 1.46423 0.354741 0.124701 1.49059 0.320466 1.5482 1.53037 0.0892707 1.07608 0.545043 0.000847689 1.07834 0.498392 0.1477
在我的数据库中有几个名称标题,它们经常被创建和重新创建,只需稍作更改。通过人工目测,人们可以很容易地识别出它们是重复的,只是拼写有轻微的变化。例如,等等。我正在寻找的是一个解决方案,它提供了一个搜索重复关键字的百分比匹配。源集可能不够大,但引用集可以进入数百万数据。因此,与mysql的潜在匹配是不可伸缩的。参考集也在mysql和sphinx中索引。当前的复制逻辑不能完全捕获所有的复制。例如
Resort Inn, Res Ort inn, Rsort Inn etc
Moy Knn Resort
我的脚本中哪里有问题?我想比较$1(第一个文件)和$21(第二个文件)。所有内容均由awk和制表符分隔
INPUT:
1st file:
1 soup
3 bread
5 roll
2nd file:
a....$20 1
b....$20 2
c....$20 3
d....$20 4
e....$20 5
OUTPUT
a....$20 1 soup
b....$20 2
c....$20 3
标签: Awk
text-processingmawk
我有一个呆呆的命令,效果很好。但我有一台安装了mawk的机器,当我试图安装gawk时,它会抱怨依赖关系被破坏。我想把这行改成mawk语法
awk -F '[|]{3}' 'BEGIN {OFS="|||"} !seen[$4]++ {print $4,$7,$3,$5,$6,$8,$9,$10,$11}' $1
输入文件:它是一个三管道分隔的文件
A|||B|||C|||D|||E|||F|||G|||H|||I|||J|||K||||L|||M|||N|||O|||P|||Q|||R|||S
在下面的文件中,我想替换所有的由,生成,但当有一个字符串(用两个分隔“)时,它不应替换其中的;
例如:
输入
输出
A,B,C,D
5cc0714b9b69581f14f6427f,5cc0714b9b69581f14f6428e,1,"5cc0714b9b69581f14f6427f;16a4fba8d13",xpto,
5cc0723b9b69581f14f64285,5cc0723b9b69581f14f64294,2,"5cc0723b9b69581f14f64285;16a4fbe38
我有20个文件,我想将每个文件的第一列打印到不同的文件中。我需要20个输出文件
我尝试了下面的命令,但这个命令将所有输出放在一个文件中
awk '{print $1}' /home/gee/SNP_data/20* > out_file
将输出写入不同的文件,我有20个输入文件第一个解决方案:请尝试以下内容
awk '
FNR==1{
if(file){
close(file)
}
file="out_file_"FILENAME".txt"
}
{
print
我正在尝试构造一个小的shell脚本,该脚本获取以下命令的输出:nc 127.0.0.1 5556 2>/dev/null output,并将其解析为单个变量,以便通过mqtt客户机进行传输。我想我需要使用grep或者awk
例如,如果我想将与wind0相关联的5个值解析为5个单独的变量,我该怎么做呢。我需要以$a=220、$b=0.0、$c=0.0、$d=8.2和$e=0结束
谢谢大家!
猴面包树
编辑:我正在尝试的系统是基于OpenWRT的,所以显然使用了ash或BusyBox,而不是bas
假设我的输入文件中有一行如下所示:
7162 "cw_107373" 65 65 0.197606944 328.935809057398 "91.67" "11/12" "0.89" "47/53" 0 N/A Active
您将看到一些数值字段被引用,而一些字段则没有。
我希望能够与它们进行数字比较,同时忽略引号
例如,我现在不能做
awk "$7 > 90{print}" Input.tsv
因为$7是一个带引号的数字字符串
我知道我可以对文件进行预处理以删
我正在寻找一种方法来格式化dmi的输出,并以一种特定的方式进行解码,我发现下面的文章正好满足了我的需要
我修改了上面答案中代码中需要的一些字段,这显示了awk从dmidecode创建带有引号的csv输出
dmidecode -t 17 | awk -F: '/Size|Locator|Speed|Manufacturer|Serial Number|Part Number/{sub(/^ */,"",$2);s=sprintf("%s,\"%s\"",s,$2)}/^Memory/{print
我有这样的数据,每行固定的字符数(8)
我需要分别对“Y”和“R”的数量进行输出计数,如下所示
RYRYRYRR 3 5
YRRRRYRR 2 6
YYRRRRRY 3 5
我尝试了使用grep的脚本,如下所示
RYRYRYRR 3 5
YRRRRYRR 2 6
YYRRRRRY 3 5
grep-c'Y'test.dat正在打印一些数字,如13,请尝试以下操作:
awk '{print $0, gsub("Y", "Y"), gsub("R", "R")}'
在awk中,gsub返回成功
我有很多编程经验,但我对awk还是相当陌生的。有些事情不像我预料的那样。有人能帮我澄清一下吗
在linux上,我的命令:
gawk-f do3 tmp6.txt
我的源文件do3
#!/bin/gawk -f
BEGIN {
FS="-"
}
{print "Two is " $2 "One is" $1 "zero is" $0}
我的输入文件tmp6.txt
~BAND:3-10M
~MODE:2-CW
~QSO_DATE:8-20111130
~TIME_ON:6-175415
~eor
正在尝试将一些已删除的数据转换为以条形分隔的未删除的数据
下面是一些示例数据
asd1276vdjs12897364vsk Tue Apr 2 08:19:12 2013 [pid 3] [words] FAIL UPLOAD: Client "00.005.006.006", "/0801NSJH.bbf", 0.00Kbyte/sec
进入
正则表达式足够简单,但我不知道如何说第一个字段=regex,第二个字段=regex等等
这个sed是功能性的,但有点粗糙,我想让它在gawk中工作
最好的解决方案是将awk存储模式与在数组中找到它的行一起搜索。。我需要一个shell脚本吗?或者它可以只用awk来完成
例如,如果我搜索“吉他”这个词,它会生成一个数组,其中包含的信息是在第13行、第18行和第89行找到的
awk '/home/ {
array[$0] = NR
}
END {
for(i in array) print i, array[i] }' 1-1000.txt
例如,这将打印与找到它们的编号匹配的行。。但我需要的不是$0,而是“home”模式,作为关联数组的索引
我有两个文件:
文件1:
1012055500012221
2011052210011021
3010051501010221
4015051510012201
文件2:
50222111
60202100
75222105
90202125
我想:
1012055500012221
2011052210011021
3010051501010221
4015051510012201
50222111
60202100
我已经执行了下面的命令,并将数据存储在sample.txt文件中
chkconfig --list | grep postfix > sample.txt
现在,此文件包含以下输出:
postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off
现在我需要提取2:之后的字符串。输出应为on
如果临时文件的唯一目的是提取,则使用awk或grep找到它的方法是否是awk绕过临时文件创建的一种方法:
chkconf
我一直在使用awk从中提取“[]”之间的版本,以获得正确的解决方案
是否有任何快速有效的一行程序,任何人都可以提供帮助?使用awk,使用方括号作为字段分隔符,输出字段2,记录编号1除外:
awk -F '[][]' 'NR > 1 {print $2}'
或者,带有-o的grep用于提取子字符串
grep -oP '(?<=\[)[^]]+'
grep-oP'(?Genius.工作起来像个符咒!)
grep -oP '(?<=\[)[^]]+'
我想在tcl中执行以下行:
exec awk-F“[]]”/dB/{print$2}Thx to Donal Felows我发现问题不在于shell引用,而在于tcl语法。因此,我修改了我的整个答案,提出以下建议:
exec/bin/bash-c{amixer-sget-Master | awk-F“[]]”/dB/{print$2}}
或者,如果您希望使用流程替换而不是管道:
exec/bin/bash-c{awk-F“[]]”/dB/{print$2}Thx给Donal Fellows我发
我有两个文件包含如下内容
cat file1.txt
a b c
1 2 3
cat file2.txt
a
b
c
1
2
3
我希望文件1被安排为
a
b
c
1
2
3
a b c
1 2 3
文件2将被安排为
a
b
c
1
2
3
a b c
1 2 3
我想要一个使用awk单行的解决方案,对于您的第一个文件,您可以尝试以下方法:
awk '{for (i=1 ; i <= NF ; i++) print $i}' file1.txt
awk 'BEGIN {st
我再次与awk进行斗争,因为我从日志文件中取出了数据。我的日志文件所涉及的区域如下所示,但在该块的上方和下方有几千行:
4C*DJ - (B-C)*DJK + 2*(2A+B+C)*D1 - 4*(4A+B-3C)*D2 = 0
Value = 0.5293955920D-22
Alpha Matrix in cm-1
Axis Mode Inertia Coriol. Anharm. Total
x 1 -0.37699D-0
我试图使用函数列出字段1的内容:
help(){
if [[ $# -eq 0 ]] ; then
echo '######################################'
echo ''
echo 'Argument to run run name must be given: ./report.sh Name'
echo 'Report names are:'
ALLNAMES=$(cut -d '|' -f 1
我有两个.txt文件,一个用TAB作为字段分隔符,另一个用|作为字段分隔符
我想将第一个文件的分隔符从选项卡更改为CTRL-A,并另存为.txt文件,第二个文件的分隔符从|更改为CTRL-A并另存为.txt文件
这两个文件是独立的文件
我们如何使用awk或sed执行此操作?对于文件一,请尝试:
cat file1 | sed -e 's/\t/\x01/g' >file1.txt
对于文件2,请尝试
cat file2 | sed -e 's/\|/\x01/g' >file2.t
我想检查特定字符串“20040213_25049.XXXX”是否包含XXXX,另一方面,当我写入类似“20040213_25049.XXXX”的字符串时,它是匹配的,但我想与“20040213_25049.XXXX”匹配
我没有从上述行获得任何输出。您可以执行以下操作:
echo "20040213_25049.XXXX" | awk '/[0-9]{8}_[0-9]{5}\.XXXX/ {print "yes"}'
yes
它将测试您是否有5位数字后跟和4位X
还是像这样
echo "200
我想将固定宽度的文件多行记录转换为单行记录。该文件包含4个字段:
日期戳,严重性,错误代码,消息类型根据字段中的数据,记录数据可以跨越多行。例如
日期戳字段宽度为10个字符-但数据值为19个字符,因此它跨越两行。前10个字符在第一行,后9个字符在第二行
字段位置
日期戳=1-10
severity=12-17[这些值可能是错误、信息、警告,因此如果该值是警告,则剩余数据将放在12-17的第二行中]
错误代码=18-25
消息=26-70
记录之间没有空行
2014-02-21 INFO UTF8
我有一个包含多行数据的文件,其中一些是重复的,记录末尾有日期字段。我希望能够扫描文件并保留最新记录。以下是数据的样子:
00xbdf0c9fd6;joe@easy.us.com;20141231 <- remove this one
00vbdf0c9fd6;joe@easy.us.com;20150403 <- keep this one (newer date)
00dndf0ca080;betty@easy.us.com;20141231 <-keep
00dbkf0ca
假设我有三个文件
文件1
文件2
1 14.0
2 11.0
3 12.0
文件3
我想把这些文件合并成一个输出
输出文件
10.0 14.0 9.0
13.0 12.0 11.0
14.0 12.0 4.0
所有文件的行数都相同。需要将每个文件的第二列添加到输出文件中
值需要用一个空格分隔
我想学习如何对多个文件执行此操作,在awk或linux终端中最多4个文件。鉴于您的新问题:
$ paste file1 file2 file3 | awk '{print $2,$4,$6}'
1
我有一些目录和文件,如下所示:
/my/directories/directory0/
|
-->File1.txt
|
-->File2.txt
/我的/目录/目录1/
|
-->File1.txt
|
-->File2.txt
/我的/目录/目录2/
|
-->File1.txt
|
-->File2.txt
/我的/目录/目录3/
|
-->File1.txt
|
-->File2.txt
这些是CSV文件,我正在尝试计算第三列,并从最高到最低排序
现在我能够做到这一点,但只能在每个dir
我正在将100个UDB表中的数据导出到.csv文件中。但是,我在使用导出的数据时遇到了一个问题,因为有些表包含带有控制字符的用户文本,这些字符正在将行拆分为新行。是否有办法使用sed或awk删除^M并仅重新连接受^M影响的行。我可以在输出上清理这个,但是我有太多的表,所以我希望避免在那里检查,因为大多数记录都是好的
需要变为单线的虚线示例
那里应该有两行,但由于^M个字符,它被分成了4行。使用GNU时:
sed '/\r$/{s///;N;s/\n//}' file
如果您想“就地”编辑您的文
要基于第一个字段打印唯一的行,请保留该行的第一个匹配项,并删除重复的其他匹配项
Input.csv
10,15-10-2014,abc
20,12-10-2014,bcd
10,09-10-2014,def
40,06-10-2014,ghi
10,15-10-2014,abc
期望输出:
10,15-10-2014,abc
20,12-10-2014,bcd
40,06-10-2014,ghi
试过下面的命令并完成
awk 'BEGIN { FS = OFS = "," } { !see
遗留web应用程序需要国际化。错误消息当前以以下方式写入源代码中:
addErrorMessage("some text here");
使用正则表达式可以很容易地找到和提取这些符号。它们应该被这样的东西取代:
addErrorMessage(ResourceBundle.getBundle("/Bundle", lcale).getString("key for text here"));
此处文本的键和此处某些文本之间的对应关系将在.property文件中
根据一些linux大师的说法,
我正在寻找一种方法来连接线,如果文件不控制M字符。AIX有其标准的awk和sed实用程序,但没有GNU
问题是:我们从第三方windows获取文件。并且文件在每行末尾都有^M(即。\r)个字符,某些行除外,其中某些字段中的数据本身有\n个字符。因此,需要连接具有此额外\n字符的行
数据示例:
col1|col2|col3|col4|col5|^M
a1|a2|a3|a4|a5|^M
b1|b2|b3|b
4|b5|^M
c1|c2|c3|c4|c5|^M
预期产出
col1|col2|col3
我的目标是能够识别MapR集群文件系统中的所有流(文件)路径
通过解决这个问题,我发现在MapR集群中,流存储为指向具有只读权限的MapR表的链接
可以使用以下方法轻松发现这些问题:
ls -alR -1 /mapr |grep 'lr-------- 1 mapr mapr'
lr-------- 1 mapr mapr 2 Jan 24 13:02 f -> mapr::table::2129.42.131292
lr-------- 1 mapr mapr 2 Jan 27 12:
我在处理文件中包含“%F”的数据并对其执行awk时遇到问题
我试图在文件的每一行末尾添加两个字段($shell中的变量,但为了简单起见,下面是硬编码的)
当awk在数据中遇到“200%F”时,它给出下面给出的错误
我可以用sed替换%并在以后将其替换回来。有没有更优雅的方法/解决方法
测试数据如下所示
输入
$ cat test1.out
a|b |c
e|200% F|f
所需输出
$ cat res1.out
a|b|c|123|test1.out
e|200% F|f|123|test1
这里是我们需要执行的2个命令,有两种方法可以在一行中执行它,或|。是否有其他方法通过awk命令执行它
下面是两次执行的命令,一个命令是否可以有多个awk print,如示例命令所示
isi_classic snapshot usage | tail -n 1 | awk '{printf "\t\t\tSnapshot USED %=%.1f%%\n", $4}'
Snapshot USED =0.6%
isi_classic snapshot usage | tail -n -1 |
我以这种格式创建了一个文本文件:
[Term]
id: HP:0000006
name: Autosomal dominant inheritance
alt_id: HP:0001415
alt_id: HP:0001447
alt_id: HP:0001448
alt_id: HP:0001451
alt_id: HP:0001455
alt_id: HP:0001456
alt_id: HP:0001463
def: "A mode of inheritance that is obser
我有3个文件。我希望所有3列中的所有字符串都不匹配。我已尝试
grep -Fvf file2 file1
awk 'NR==FNR{c[$2]++;next};c[$2] == 0' file1 file2 file3
但是没有成功
文件1
ABC 1 Town
ABC 2 Rural
ABC 3 Town
ABC 4 City
ABC 5 Urban
ABC 6 Town
文件2
文件3
输出
File1 File2 File3
A
在上面的文件中,我们有头和尾,以1开头的记录是详细记录
在详细记录中,要使用awk/sed命令对从位置28到44的值进行求和,包括符号使用awk我们可以使用以下方法解决此问题:
substr(s,m[,n]):
返回从位置m开始的s的至多n个字符的子字符串,从1开始编号。如果省略了n,或者n指定的字符多于字符串中的剩余字符,则子字符串的长度应受到字符串s长度的限制
这允许我们获取表示数字的字符串。在此,我假设数字前后的符号相同,因此数字的符号为:
000Bxxxxx111118064085vxa
我读过关于使用awk将一个文件拆分为多个文件的内容:
我对Pramod和jaypal singh提供的解决方案之一感兴趣:
awk '/^>chr/ {OUT=substr($0,2) ".fa"}; {print >> OUT; close(OUT)}' Input_File
因为我仍然无法添加任何评论,所以我在这里询问。
如果输入是
>chr22
asdgasge
asegaseg
>chr1
aweharhaerh
agse
>chr14
gasega
我正在尝试匹配两个表中的第一列。在下面的示例中,我需要在第二个表中获取到期日期,并使用'AWK'输出它
我尝试了下面的代码,但它不工作
awk 'NR==FNR{a[$1]=$2;next;}{print $0 "," ($1 in a ? a[$1] : $2 )}' table1 table2
表1
LICENSE,ALLOCATION,IN_USE
LicenseA,1102,98
LicenseB,267,105
LicenseC,546,500
LicenseD,982,23
表2
我试图通过用几个字符(两个*)替换几个相同的字母(超过3个)来转换文本
我的意见:
ffffOOOOuuuurrrr
fffffiiiiivvvvveeeee
我应该得到什么:
**OOOO****
********
我的测试命令是:
awk '{gsub(/[a-z]{4}/,"*"); print}' textfile
我不明白如何将{4}转换为“多于3”
还有如何打印两次(如相乘)
我还确信“超过三个”条件会将输入转换为:
**OOOO**
**
有没有办法避免这种情况(替换一系列
sample.txt确实有“制表符分隔列”,并且有分隔的分号,需要相应地从数字序列分割为重复值
cat sample.txt
2 2627 588;577
2 2629 566
2 2685 568-564
2 2771 573
2 2773 597
2 2779 533
2 2799 558
2 6919 726;740-742;777
2 7295 761;771-772
请注意,某些行可能具有倒序
我试图匹配文件中的字符串,只打印与该字符串匹配的第一行。我可以使用grep获得结果,但是有没有一种方法可以使用awk获得相同的输出
# cat file
/dev/sdac
/dev/cciss/c0d0
/dev/cciss/c0d0p1
/dev/cciss/c0d0p2
/dev/cciss/c0d0p1
# grep -wm1 c0d0p1 file
/dev/cciss/c0d0p1
你能试试下面的吗
awk '/c0p0d1/{print;exit}' Input_file
说
标签: Awk
embedded-linuxetcpasswd
我在一个嵌入式linux机器上,我是根用户。我已经设置了一个密码,该密码存在于/etc/shadow文件中
现在以root用户身份运行并在shell脚本中使用以下逻辑,我可以检查是否设置了密码
if [ `awk -F ':' '/^'$i':/ {print $2}' /etc/shadow` ] ; then
echo "Password is set" ;
# How can I check, compare or retrieve the passwor
我有下面的命令
$ awk -v p=502013514208295320210301 '-F"' '$6==p' inputfile.txt
输入文件包含以下行
"2021-03-01"|"AUTO"|"50310040379713492021022120210321"|"PPU_ROAM_BELL_CORPORATE_US"|"PPU"|"302610024660748&
从长格式转换为宽格式时遇到问题:
我的数据:
79264 Bacteria Firmicutes
79264 Bacteria Firmicutes
79264 Bacteria Firmicutes
2947 Bacteria Nitrospirae
2947 Bacteria Nitrospirae
2947 Bacteria Nitrospirae
2947 Bacteria Nitrospirae
2947
这就是我需要做的:
输入:(Python)
这是一个函数,
##它的目的是。。。雅达雅达雅达
def功能_名称(x):
返回x+1
输出:(降价)
##函数名
这是一个函数,
它的目的是。。。雅达雅达雅达
到目前为止,我得到了:
sed-n'/##/,/def/{/#def/p}TEST.py | cut-d'-f2-| sed's/(.*)\(.*):/'
产生:
这是一个函数,
它的目的是。。。雅达雅达雅达
函数名
有两个条件:
1.-“##”和“def”之间的线与这些模式中的任何一
我有两个文件,每个文件包含以下内容:
/tmp/mydir-1:
direction=1, code=a b c d, time=xxxx
direction=1, code=f x fdfsdf sdfs, time=xxxx
direction=1, code=a b c f, time=xxxx
第二个文件/tmp/mydir-2:
direction2=2, code2=a b c fsd, time2=xxxx
direction2=2, code2=f x fdfsdf sdfs,
上一页 1 2 ...
4 5 6 7 8 9 10 ...
下一页 最后一页 共 151 页