小编dov*_*vah的帖子

按第一列然后第二列对文件进行排序

如何通过按第二列的第一个元素排序来操作两列制表符分隔的文本文件(仅当第一列元素相同时)?

例子:

输入文件 1

A   1-2
A   6-8
A   3-4
B   7-10
B   5-9
Run Code Online (Sandbox Code Playgroud)

预期输出:文件 2

A   1-2
A   3-4
A   6-8
B   5-9
B   7-10
Run Code Online (Sandbox Code Playgroud)

sort

14
推荐指数
1
解决办法
4万
查看次数

合并来自两个单独文件的列

如何使用awk从两个单独的文件中创建一个合并选择性列的新文件?不会弄乱两个文件的元素顺序。

示例:文件 3 可能包含文件 1 中的第 1、2、3 列和文件 2 中的第 4 列。

File 1
A   23  8   T
A   63  9   9
B   45  3   J

File 2
A   0
A   6   
B   5

File 3
A   23  8   0
A   63  9   6
B   45  3   5
Run Code Online (Sandbox Code Playgroud)

awk text-processing columns

10
推荐指数
2
解决办法
3万
查看次数

打印每行的最后一个元素

如何在文件中的最后一个选项卡之后打印元素?

示例:文件 1

A    3    8    6    7
B    4    6    2    3    6    8
c    1    9
Run Code Online (Sandbox Code Playgroud)

会返回:

7
8
9
Run Code Online (Sandbox Code Playgroud)

awk

9
推荐指数
2
解决办法
5万
查看次数

文本文件中以逗号分隔的字段数

我正在尝试构建一个 awk 语句来读取此文件:

A   1,2,3   *
A   4,5,6   **
B   1
B   4,5     *
Run Code Online (Sandbox Code Playgroud)

并构建一个这样的文件:

A   1,2,3   *    3   1   0.333
A   4,5,6   **   3   2   0.666
B   1            1   0   0
B   4,5     *    2   1   0.5
Run Code Online (Sandbox Code Playgroud)

在这个新文件中,前三列与原始文件中的相同。第四列必须包含第 2 列中逗号分隔的元素数。第五列必须包含第 3 列中的字符数。最后一列包含第 5 列在第 4 列中的比例(即第 5 列除以第 4 列)。

我正在尝试以下代码:

awk '{print $1"\t"$2"\t"$3"\t"(NF","$2 -1)"\t"length($3)"\t"(length($3)/(NF","$2-1))}' file1 > file2
Run Code Online (Sandbox Code Playgroud)

但我得到了以下输出:

A   1,2,3   *    3,0   1   0.333333
A   4,5,6   **   3,3   2   0.666667
B   1            2,0   0   0
B   4,5     * …
Run Code Online (Sandbox Code Playgroud)

awk text-processing

6
推荐指数
1
解决办法
2972
查看次数

计算一行中逗号分隔的字符

如何使用 awk 或 sed 计算在文件的给定列(tab_delimited)中用逗号分隔的元素数量?

例子:

AC    1,23,5
DC    2,8,89
Run Code Online (Sandbox Code Playgroud)

会返回:

AC    3
DC    3
Run Code Online (Sandbox Code Playgroud)

sed awk

5
推荐指数
1
解决办法
2万
查看次数

如果给定的列以大写字母开头,则打印行

我有一个这样的文件:

ID  A56
DS  /A56
DS  AGE 56
Run Code Online (Sandbox Code Playgroud)

只有当第二列以大写字母开头时,我才想打印整行。

预期输出:

ID  A56
DS  AGE 56
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试过的:
awk '$2 ~ /[A-Z]/ {print $0}' file
打印所有内容:在第二列中找到大写字母。

awk '$2 /[A-Z]/' file
获取语​​法错误。

awk

5
推荐指数
2
解决办法
1万
查看次数

删除字段中的重复值

如何删除文件中选定字段中的重复(或更多)值,只保留一个副本?

例子

输入文件:

A    1,2,3,45,1,8,2,3
B    5,6,6,6,6,6,2,3,7
Run Code Online (Sandbox Code Playgroud)

预期输出:

A    1,2,3,45,8
B    5,6,2,3,7
Run Code Online (Sandbox Code Playgroud)

awk

5
推荐指数
2
解决办法
1500
查看次数

删除给定列中的重复字段

我想从给定的列(示例中为 $2)中删除重复的字段(逗号分隔)。

输入文件:

A    1,2,3,4   
B    4,5,6,3
C    2,15
Run Code Online (Sandbox Code Playgroud)

预期输出:

A    1,2,3,4
B    5,6
C    15
Run Code Online (Sandbox Code Playgroud)

awk

5
推荐指数
2
解决办法
1362
查看次数

除了一个之外的 Cat 文件

我正在寻找一些东西来连接目录中具有给定扩展名的所有文件,除了一个。喜欢:

cat *.txt !(DISCARD.txt)  > catKEPT
Run Code Online (Sandbox Code Playgroud)

这应该连接目录中的所有 *.txt 文件,除了 DISCARD.txt。

text-processing cat

5
推荐指数
1
解决办法
6706
查看次数

文件之间的算术运算

假设我有这两个输入文件:

> file1
2
3
4

> file2
10
100
1000
Run Code Online (Sandbox Code Playgroud)

我想为每一行计算:file1/file2,结果是file3:

> file 3
0.2
0.03
0.004
Run Code Online (Sandbox Code Playgroud)

bash 中的划分可以通过以下方式实现: $((file1_line/file2_line))

text-processing arithmetic

5
推荐指数
2
解决办法
1500
查看次数

标签 统计

awk ×7

text-processing ×4

arithmetic ×1

cat ×1

columns ×1

sed ×1

sort ×1