您好我想问一下如何使用相同的文件覆盖complete.log但获取某些字符。
当前日志文件:
CompleteJob:test1.sas:
CompleteJob:test2.sas:
新日志文件:
test1.sas
test2.sas
我使用了grep和>>这样做;
grep "CompleteJob" complete.log | cut -f2 -d: >> complete.log
但我的结果如下:
CompleteJob:test1.sas:
CompleteJob:test2.sas:
test1.sas
test2.sas
答案 0 :(得分:1)
sed -i -r 's/^.+:(.*):.*/\1/g' file
cat file
test1.sas
test2.sas
答案 1 :(得分:0)
最佳方法:
sed -i 's/^[^:]*:\([^:]*\):.*/\1/' complete.log
[^:]*
- 匹配除:
答案 2 :(得分:0)
使用GNU awk(gawk),您可以:
gawk -F: -i inplace '{print $2}' complete.log
答案 3 :(得分:0)
尝试另外一个可以在任何版本的awk中使用的选项。
awk -F":" '{print $2}' Input_file > temp_file && mv temp_file Input_file
将字段分隔符设置为冒号(:)并将Input_file的第二列打印到输出名为temp_file的文件。然后使用mv(move / rename)命令将temp_file重命名为Input_file。请注意这里&&表示如果第一个命令成功,则只应将temp_file重命名为Input_file。