我有一个包含完整路径的文件:
/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 解析的字段执行操作?
谢谢你的帮助。
我有一个包含两个字段的大文件,第一个字段表示对象名称,第二个字段表示该对象的大小:
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)
此实现需要很长时间才能运行,是否有更有效的方法来创建所需的输出?