如何通过按第二列的第一个元素排序来操作两列制表符分隔的文本文件(仅当第一列元素相同时)?
例子:
输入文件 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) 如何使用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) 如何在文件中的最后一个选项卡之后打印元素?
示例:文件 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 语句来读取此文件:
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 或 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) 我有一个这样的文件:
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
获取语法错误。
如何删除文件中选定字段中的重复(或更多)值,只保留一个副本?
例子
输入文件:
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) 我想从给定的列(示例中为 $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) 我正在寻找一些东西来连接目录中具有给定扩展名的所有文件,除了一个。喜欢:
cat *.txt !(DISCARD.txt) > catKEPT
Run Code Online (Sandbox Code Playgroud)
这应该连接目录中的所有 *.txt 文件,除了 DISCARD.txt。
假设我有这两个输入文件:
> 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))