Questions tagged «awk»

一种模式导向的扫描和处理语言。

1
如何获取第n列包含第m列的行
我有一个包含域和网络邮件的CSV文件,如下所示: site1.com,mail.site1.com site2.com,testmail.com site3.com,mx.site3.com site4.com,smtp.site4.com site5.com,foomail.com site6.com,barmail.com site7.com,webmail.site7.com site8.com,01mx.site8.com site9.com,foobarmail.com site10.com,mx-smtp222.site10.com 我想获取其中webmails列包含同一行的domains列的行。对于上面的示例,输出应为: site1.com,mail.site1.com site3.com,mx.site3.com site4.com,smtp.site4.com site7.com,webmail.site7.com site8.com,01mx.site8.com site10.com,mx-smtp222.site10.com

4
如何为AWK /…替换开始的行增加计数器?
我最初考虑过SED(sed "s/^/COUNTER \&/" /tmp/1.tex),但是它是为单行设计的,我无法通过sed来增加计数器本身,所以现在考虑awk一下gawk,因为我在集成方法方面有丰富的经验。数据 What & South Dragon & North Dragon & 5 \\ \hline What & South Dragon & North Dragon & 5 \\ \hline What & South Dragon & North Dragon & 5 \\ \hline 预期产量 1 & What & South Dragon & North Dragon & 5 \\ …

2
Grep从固定文本开始,直到第一个空白行
我有一个prova.txt像这样的文件: Start to grab from here: 1 fix1 fix2 fix3 fix4 random1 random2 random3 random4 extra1 extra2 bla Start to grab from here: 2 fix1 fix2 fix3 fix4 random1546 random2561 extra2 bla bla Start to grab from here: 1 fix1 fix2 fix3 fix4 random1 random22131 我需要从“开始抢在这里”到第一个空白行。输出应如下所示: Start to grab from …

8
如何grep在特定列中具有特定值的行?
我有一个如下文件 200.000 1.353 0.086 200.250 1.417 0.000 200.500 1.359 0.091 200.750 1.423 0.000 201.000 1.365 0.093 201.250 1.427 0.000 201.500 1.373 0.093 201.750 1.432 0.000 202.000 1.383 0.091 202.250 1.435 0.000 202.500 1.392 0.087 202.750 1.436 0.000 203.000 1.402 0.081 203.250 1.437 0.001 203.500 1.412 0.073 204.000 1.423 0.065 204.500 …
9 awk  grep 

4
关于awk的问题
好的,因为这是一个复杂的问题,所以我将对其进行清楚的解释。我得到的文件内容如下所示: $ Cat File1 ABC Cool Lol POP {MNB} ABC Cool Lol POP {MNB} ABC Cool Lol POP {MNB} ABC Cool Lol POP {TBMKF} ABC Cool Lol POP {YUKER} ABC Cool Lol POP {EFEFVD} 我想要的输出 -Cool MNB + POP ; -Cool MNB + POP ; -Cool MNB + POP ; …

1
真假条件
我发现,如果使用awk 0 inputfile,它将不会打印任何内容,原因0是错误的条件。 如果使用awk 1 inputfile,它将1为awk解释的每一行打印所有内容,均表示为true。 如果使用awk any_string inputfile,它将不会打印任何内容,因为所有awk变量都初始化为零,因此为false。 但是,如果使用awk any_integer inputfile,它将变为true并打印文件的每一行,请问是什么原因? 我找不到GNU awk手册中已经解释过的内容。
9 awk  gawk 

7
grep来自file2的确切行块(file1的内容)
我有两个文件,file1和file2。 的样本内容file1是: A B C D E F G H 的内容file2如下: A B few other lines E F few more other lines A B C D E F G H few more other lines G H 因此,我只想搜索整个file1内容块file2。这意味着输出应仅包含以下行: A B C D E F G H 请注意:-只有合并在一起的行才应该是输出的一部分。

5
如何将/ path / to / file缩写为/ p / t / file
我正在寻找一种优雅的单行代码(例如awk),它将使用每个父级/中间级的第一个字符,但使用完整的基名来缩短Unix路径的字符串。通过示例更容易显示: /path/to/file → /p/t/file /tmp → /tmp /foo/bar/.config/wizard_magic → /f/b/./wizard_magic /foo/bar/.config/wizard_magic→ /f/b/.c/wizard_magic 鉴于下面@MichaelKjörling和@ChrisH的优点,本示例说明了当第一个字符为点时我们如何显示前两个字符。
9 sed  awk  string 

5
合并两个文件中的备用行
文件1: .tid.setnr := 1123 .tid.setnr := 3345 .tid.setnr := 5431 .tid.setnr := 89323 文件2: .tid.info := 12 .tid.info := 3 .tid.info := 44 .tid.info := 60 输出文件: .tid.info := 12 .tid.setnr := 1123 .tid.info := 3 .tid.setnr := 3345 .tid.info := 44 .tid.setnr := 5431 .tid.info := 60 .tid.setnr := …

7
如何在不分割多行记录的情况下有效地分割大型文本文件?
我有一个大的文本文件(gz'ed时为〜50Gb)。该文件包含4*N行或N记录;即每条记录由4行组成。我想将此文件拆分为4个较小的文件,每个文件的大小约为输入文件的25%。如何在记录边界分割文件? 天真的方法是zcat file | wc -l获取行数,将其除以4,然后使用split -l <number> file。但是,这会翻遍文件两次,并且行计数非常慢(36分钟)。有没有更好的办法? 这很接近,但不是我想要的。接受的答案也会进行行计数。 编辑: 该文件包含fastq格式的测序数据。两条记录如下所示(匿名): @NxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxGCGA+ATAGAGAG xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxTTTATGTTTTTAATTAATTCTGTTTCCTCAGATTGATGATGAAGTTxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + AAAAA#FFFFFFFFFFFFAFFFFF#FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF<AFFFFFFFFFFAFFFFFFFFFFFFFFFFFFF<FFFFFFFFFAFFFAFFAFFAFFFFFFFFAFFFFFFAAFFF<FAFAFFFFA @NxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxGCGA+ATAGAGAG xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxCCCTCTGCTGGAACTGACACGCAGACATTCAGCGGCTCCGCCGCCxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + AAAAA#FFFFF7FFFFFFAFFFFA#F7FFFFFFFFF7FFFFFAF<FFFFFFFFFFFFFFAFFF.F.FFFFF.FAFFF.FFFFFFFFFFFFFF.)F.FFA))FFF7)F7F<.FFFF.FFF7FF<.FFA<7FA.<.7FF.FFFAFF 每条记录的第一行以开头@。 编辑2: zcat file > /dev/null 需要31分钟。 EDIT3: Onlye第一行以开头@。其他任何人都不会。看这里。记录需要保持秩序。向结果文件中添加任何内容都是不正确的。


8
如何将行追加到上一行?
我有一个日志文件,需要对其进行分析和分析。文件包含类似以下内容: 文件: 20141101 server contain dump 20141101 server contain nothing {uekdmsam ikdas jwdjamc ksadkek} ssfjddkc * kdlsdl sddsfd jfkdfk 20141101 server contain dump 基于上述情况,我必须检查起始行是否不包含日期或我必须附加到前一行的数字。 输出文件: 20141101 server contain dump 20141101 server contain nothing {uekdmsam ikdas jwdjamc ksadkek} ssfjddkc * kdlsdl sddsfd jfkdfk 20141101 server contain dump

4
计算每个IP地址出现在日志文件中的次数
我有一个格式如下的文件: $ cat file.txt 27.33.65.2 27.33.65.2 58.161.137.7 121.50.198.5 184.173.187.1 184.173.187.1 184.173.187.1 将文件解析file.txt为以下格式的最佳方法是: 27.33.65.2: 2 58.161.137.7: 1 121.50.198.5: 1 184.173.187.1: 3 换句话说,我想遍历文件并计算每个IP地址出现的次数。我已经运行了它,sort因此所有IP地址都井井有条,彼此紧紧相连。
9 awk  sort 

3
如何用AWK减去行(行)
我试图弄清楚如何使用AWK减去行。例如,假设输入文件为: 30 20 输出为: 10 现在,作为测试,我试图从以下公式计算“已用”内存列: $ cat /proc/meminfo 所以目前我已经写了这个: $ grep -P 'MemTotal|MemFree' /proc/meminfo | \ -- Here comes the calculation using AWK 我尝试了以下方法: $ grep -P 'MemTotal|MemFree' /proc/meminfo | \ awk '{print $2}' | awk '{$0-s}{s=$0} END {print s}' 但这只是给我最后一行数据。 我找到了一个可行的解决方案,但我怀疑这是最佳的解决方案。我所有的编码经验都告诉我,硬编码行数非常糟糕:P $ grep -P 'MemTotal|MemFree' /proc/meminfo | \ …
9 linux  awk 

2
使用awk处理两个文件
我读的比较使用Unix和awk中两个文件。真的很有趣。我已经阅读并测试了它,但是我无法完全理解它并在其他情况下使用它。 我有两个文件。file1有一个字段,另一个有16个字段。我想阅读file1的元素,并将它们与的第3个字段进行比较file2。如果每个元素都匹配,我将中的字段5的值相加file2。举个例子: 文件1 1 2 3 文件2 2 2 2 1 2 3 6 1 2 4 4 1 1 2 3 6 3 3 3 4 对于元素1,file1我想在字段file23的值为1的字段5中添加值。并对元素2和3中的元素执行相同的操作file1。1的输出为(3 + 4 = 7),2的输出为2,3的输出为4。 我不知道如何用awk编写它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.