【发布时间】:2015-11-02 21:09:15
【问题描述】:
我有一个如下所示的文件:
1 543423 34354
2 5654656 3423 xyz_1378,xyz_1379
3 4645656 34234354 xyz_1384,xyz_1385
4 5654 78678 xyz_1390,xyz_1391,xyz_1392
5 54654 76867 xyz_1411,xyz_1412,xyz_1413
6 54654 8678
7 56546 67867 xyz_1711
8 678 7867
9 76867 7876 xyz_2940
10 6786 678678 xyz_3101,xyz_3102,xyz_3103,xyz_3104,xyz_3105,xyz_3106,xyz_3107
11 67867 78678
注意它包含 4 个字段,以空格分隔。最后一个(第四个)字段可能为空,并且可能包含许多用逗号分隔的值。
我想打印最后一行的所有值,每行一个。我该怎么做(最好使用 awk)?
更新: 我需要为许多文件批量执行此操作(将所有文件的连接输出放在一起)。
这行得通:
for x in *; do awk '{print $4}' $x/filename | awk --field-separator="," '{if ($0 != "") {for (i=1; i<NF+1; i++) print $i}}'; done;
并返回类似的东西
xyz_1378
xyz_1221
xyz_97
xyz_132523
xyz_242
我现在唯一缺少的是,我希望上面的每一行都以一个额外的字段开头 - $x(来自for 循环的那个)。
我尝试将 print $i 更改为 print $x,$i" butx` 在此范围内似乎无法正确识别。有什么想法吗?
谢谢!
【问题讨论】:
-
当您说“我想打印最后一行的所有值,每行一个”。你的意思是“最后一栏”吗?
标签: awk