gawk

使用 awk 连接多个字段
gawk

使用 awk 连接多个字段

我有 file1 如下: 2010,92614,0,1 2010,92614,4,1 和 file2 如下: 2010,0,907894 2010,1,17788 2010,2,2827 2010,3,1212 2010,4,669914 我想加入 file1 的字段 1 和 3 以及 file2 的字段 1 和 2 上的两个文件(例如,两个文件中的第一条记录为 2010 和 0),并且输出需要如下所示: 2010,92614,0,1,907894 2010,92614,4,1,669914 换句话说,我需要将 file2 的字段 3 附加到 file...

Admin

当有空白列时将列拆分为多列
gawk

当有空白列时将列拆分为多列

我需要一些帮助: A B C 1 2 Q W A 每当我们发现空白列时,就将该列拆分为新列。 输出: A,1,Q B,2,W C,,A 我使用过 Sed,但找不到要分割的关键字。由于我有大量数据,有没有办法有效地做到这一点。 谢谢 ...

Admin

awk 匹配最后一条记录并打印
gawk

awk 匹配最后一条记录并打印

我得到的记录是fileinp: 1 ABCDEFGHILM 12345678901234567 ABCD X 1 CDEFGHILMNO 34567890123456789 BCDE Y 1 EFGHILMNOPQ 56789012345678901 CDEF Z 1 GHILMNOPQRS 78901234567890123 DEFG W 当最后一个字符是 Y 或 Z 时,我想从字符 14 打印到字符 4...

Admin

awk 行为不当,其中有些字符串很长(最多 45 个字符)?
gawk

awk 行为不当,其中有些字符串很长(最多 45 个字符)?

我想提取以下文件的最后一列和第一列,我将其称为filename. A 0.400 1.0 1.0 3.0 0.0 1.00 2.0 5.0 1.0 1.00 0.0 0.0 gs100_bs050_rcrs100_rarcinf_core_0400mpc3_df B 0.400 1.0 1.0 3.0 0.0 0.25 2.0 5.0 1.0 0.25 0.0 1.0 gs100_bs050_rcrs025_rarc100_core_0400mpc3_df C 0.03021516 4.0 1.0 4.0 0....

Admin

如何使用搜索模式文件来搜索 csv 最后一列中的确切单词?
gawk

如何使用搜索模式文件来搜索 csv 最后一列中的确切单词?

这个问题作为单独的主题进行讨论,但我无法让所有内容一起工作。 我有一个 tsv 文件,这是一个示例行:(file1) NODE_1_length_45927_cov_22.029055_g0_i0 WP_055195622.1 93.1 729 50 0 291 2477 1 729 0.0e+00 1275.4 166486;1897048 最后一个字段包含一个数字列表,以 分隔;。 我有一个包含搜索模式列表的文件(文件2): 33090 3041 1897 97100 97101...

Admin

如何使用 gawk 根据条件向 CSV 文件引入新标头
gawk

如何使用 gawk 根据条件向 CSV 文件引入新标头

我有一个 csv 文件,我希望仅提取列号7和11。根据第 7 列的值(该列具有值)OK或KO我希望在其旁边插入一列(称为value映射位置): OK -> 0 KO -> 1 此外,我在开头添加了一个简单的字符串列。 我的.awk文件如下: BEGIN {FS=";";OFS=","} { value=0 if($7=="KO") { value=1 } print "Measure_QS",$7,value,$11 } 使用该文件: gawk -f converter.awk Dataset...

Admin

使用 awk 合并两个文件跳过 1 个文件的最后一行
gawk

使用 awk 合并两个文件跳过 1 个文件的最后一行

我正在尝试连接两个文件,删除重复的头行并只取最后一行 例如: 文件1.txt head1 data1 data2 tail8 文件2.txt head1 data3 data4 tail9 file3.txt 中所需的结果: head1 data1 data2 data3 data4 tail8 or rail9 doesn't matter 我首先尝试删除重复的头: awk '!seen[$0]++' file1.txt file2.txt > file3.txt 第二个命令是: awk 'NR > 1 { print prev } { ...

Admin

awk:如何打印 env 文件中键的值?
gawk

awk:如何打印 env 文件中键的值?

这是我尝试过的(以及其他一些迭代)。文件中的片段 APOLLO_KEY=service:abcd cat packages/graph/.env | gawk '{ if ($0 = "APOLLO_KEY" ) { RS = "=" } ; { print $1 } }' 它返回APOLLO_KEY而不是文件中每一行的值。我期望并想要获得的价值是 service:abcd 我知道以这种方式解析文件存在相当大的问题。我只是为了一些一次性命令而这样做,此时我对我的 awk 知识/谷歌搜索感到沮丧。 ...

Admin

使用 Unix 命令实现排序 URL 正则表达式
gawk

使用 Unix 命令实现排序 URL 正则表达式

我是正则表达式的新手,因为它们体现在 sed、awk、sort、grep 和其他 Unix 二进制文件中。 我知道如果我使用以下正则表达式对文本编辑器 (BBEdit) 中的 URL 列表进行排序: (https?)://([a-z0-9]+[.])*(.+?)[.](.+?)/(.*)$ \3\t\4\t\2\t\5\t\1 它产生了我想要的最终结果。 我想在 Unix 命令行上对此进行排序,这样它就可以自动完成,而无需我在 BBEdit 的 GUI 中触发排序。但是,我对 sed、awk、sort 等没有足够的了解,无法正确翻译它。 如果有人能帮助我给...

Admin

如果匹配特定关键字,则更改表中的多个列值
gawk

如果匹配特定关键字,则更改表中的多个列值

我有以下格式的数据: 38%,1,0,0 32%,400,376.61,94.1525 54%,400,197,49.25 22%,1,1,100 如果第二列等于 1,则将第二、第三和第四列更改为 NA 38%,NA,NA,NA 32%,400,376.61,94.1525 54%,400,197,49.25 22%,NA,NA,NA 我尝试先替换一列,但它不起作用: awk -F, '$2==1 {$2="NA"}1' OFS=, ...

Admin

如何在每次出现正则表达式时分割文件?
gawk

如何在每次出现正则表达式时分割文件?

每次段落包含“7-04/PNLP-000001”形式的代码时,我试图让 gawk 将文本文件拆分为不同的文件。例如,如果原始文本文件包含以下内容: Proposición no de Ley 7-04/PNLP-000009,与塞维利亚-科尔多瓦-马德里大道相关。 总统夫人 Ley 7-04/PNLP-000001 提案,涉及安达卢西亚农村中年工人的恢复和社会进步。 总统夫人 我想获得一个包含以下内容的文件: Proposición no de Ley 7-04/PNLP-000009,与塞维利亚-科尔多瓦-马德里大道相关。 总统夫人 另一个内容如下...

Admin

使用 gawk 根据 CSV 列数据创建文件名
gawk

使用 gawk 根据 CSV 列数据创建文件名

我有一个非常混乱的 CSV 文件,其标题如下所示: maindata.csv time;area;measurement1;measurement2;measurement3;.....measurement12 我能够使用以下gawk命令格式根据测量名称分别拆分单个大文件,以便将每个单独的文件保留为以下 CSV 格式: measurement1.csv -> has csv header [time,area,measurement1] measurement2.csv -> has csv header [time,area,measure...

Admin

使用 awk 计算汇率/“导数”
gawk

使用 awk 计算汇率/“导数”

awk这里是新手。 假设我有两列数据,并且我想计算增长率,由 delta(y)/delta(x) 给出。我将如何在awk脚本中执行此操作?到目前为止我所学到的仅涉及逐行操作,并且我不确定如何处理多行。 注意:假设我有 N 个数据点,我将获得 N-1 个斜率/速率值。 例子: 输入 x y 2 4 3 5 4 7 输出 Slope - 1 2 这里是awk最好的选择吗?或者其他工具更好吗? ...

Admin

为什么 GNU awk 实现限制在实践中似乎不起作用?
gawk

为什么 GNU awk 实现限制在实践中似乎不起作用?

这一页提到 GNU awk 实现限制时提到字段大小和文字字符串大小的限制是MAX_INT。 但是,当我将长字符串文字声明为变量并尝试使用函数查找其长度时length,当字符串长度超过 308 个字符时,该函数似乎会中断。下面的例子: BEGIN { avar=1234... #309 characters print length(avar) #prints 3 but prints right length when length < 309 } 但是,以下命令行适用于 1000 个字符: echo 1234... | awk '...

Admin

需要在文本前面获取引号而不使用任何转义字符和 gsub
gawk

需要在文本前面获取引号而不使用任何转义字符和 gsub

我有一个名为tst.csv以下内​​容的文件 "FORESS INTL PTN "A" (208)" 需要获得以下输出,要求是我们不应该使用任何转义字符 ( \) 并且gsub/sub只需要用于实现以下预期输出 - 因为我们使用的外部程序不会解码反斜杠字符。 预期产出 "FORESS INTL PTN ""A"" (208)" 尝试了以下命令 awk '{gsub(/"/,"&&");gsub(/^""|""$/,"")}1' tst.csv 我得到以下o/p FORESS INTL PTN ""A"" (208) ...

Admin