使用 awk 编辑文件中的字段

Edit fields inside a file using awk

我正在尝试使用 awk 修改数据列表的第二个字段

输入:

8 : /usr/local/lib/python2.7/test/test_cookie.py : Image

输出:

8 : /usr/local/lib/python2.7/test/ : Image

我想使用 awk 或 sed 从第二个字段中删除文件名。

我已经尝试在另一个 awk 中使用 awk 命令来替换输入文件的第二个字段。然而,这给了我错误:

cat log.txt |awk -F: '{=system(cat log.txt |awk -F":" '{print }'|awk -F/ '{OFS="/";$NF=""}{print [=12=]}' )}{print [=12=]}'

你能帮我用一个更有可能的方法来做同样的事情吗?

你可以使用这个awk:

awk 'BEGIN{FS=OFS=" : "} {sub(/[^\/]+$/, "", )} 1' log.txt
8 : /usr/local/lib/python2.7/test/ : Image

解释:

BEGIN{FS=OFS=" : "}      # Set input and output field separator as " : "
sub(/[^\/]+$/, "", )   # Remove part after *last* / from 2nd field
1                        # default awk action to print the record