使用 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
我正在尝试使用 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