小编use*_*009的帖子

awk 字段的操作

我有一个包含完整路径的文件:

/home/usr/file_name_delimited_by_underscore_123.txt  
/home/usr/another_example_456.rar
Run Code Online (Sandbox Code Playgroud)

我想从没有扩展名的路径中打印文件名,并在它旁边打印最后一个_.

输出:

file_name_delimited_by_underscore_123 123
another_example_456 456
Run Code Online (Sandbox Code Playgroud)

我想出了一种使用管道 awk 命令获得所需输出的方法:

cat file | awk -F[/.] '{print $(NF-1)}' | awk -F_ '{print $0" "$NF}'
Run Code Online (Sandbox Code Playgroud)

有没有办法在没有管道的情况下实现这一目标?

我的问题归结为是否可以对 awk 解析的字段执行操作?

谢谢你的帮助。

awk

4
推荐指数
2
解决办法
263
查看次数

在一个逗号分隔的列表中创建对象大小的摘要

我有一个包含两个字段的大文件,第一个字段表示对象名称,第二个字段表示该对象的大小:

A 1
A 2
B 4
ABC 12
C 5
A 9
B 3
ABC 6
Run Code Online (Sandbox Code Playgroud)

我想用以下格式总结列表:

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

我想出的解决方案是创建文件中存在的对象的唯一列表,遍历它并将其与原始文件匹配

for object in $(awk '{print $1}' objects_with_sizes.txt | sort -u);do
    echo -n "$object "
    awk -v pattern="$object" '$1==pattern{printf "%s%s" ,sep,$2;sep=","} END{print ""}' objects_with_sizes.txt  
done 

Run Code Online (Sandbox Code Playgroud)

此实现需要很长时间才能运行,是否有更有效的方法来创建所需的输出?

sed awk text-processing

0
推荐指数
2
解决办法
66
查看次数

标签 统计

awk ×2

sed ×1

text-processing ×1