我有文件:
A cars1 black NY
A cars2 W
A cars3 black SP
我想将最后一列转换为新行并添加>
符号:
A cars1 black
>NY
A cars2
>W
A cars3 black
>SP
我尝试了下面的命令,但是效果不好,可能是因为第三列缺少值:
awk '{print $1,$2,$3,"\n"$4}'
答案 0 :(得分:2)
在sed:
$ sed 's/[[:blank:]]*\([^[:blank:]]*\)$/\n>\1/' infile
A cars1 black
>NY
A cars2
>W
A cars3 black
>SP
这将采用最后一系列空白,然后是非空格,并用换行符>
和捕获的非空格替换它们。
请注意,有些seds抱怨插入这样的换行符。替代方案是:
插入文字换行符
sed 's/[[:blank:]]*\([^[:blank:]]*\)$/\
>\1/' infile
插入ANSI转义的换行符
sed 's/[[:blank:]]*\([^[:blank:]]*\)$/'$'\n''>\1/' infile
命令替换
sed 's/[[:blank:]]*\([^[:blank:]]*\)$/'"$(printf '\n')"'>\1/' infile
答案 1 :(得分:1)
在awk中:
$ awk '{$NF=ORS ">" $NF; print}' file
重点是修改最后一个字段$NF
,然后只打印整个记录$0
。
答案 2 :(得分:1)
在awk中,你可以机械地做到这一点:
select cast(0.50000 as float FORMAT 'ZZZZZ.ZZZZZZ')