我有一个像这样的行的文件:
A, B, C, D, E
由此,我想获得:
A, B, C
我可以使用sed或awk吗?
答案 0 :(得分:4)
是的,你可以:
sed -r 's/([^,]+,)([^,]+,)([^,]+).*/\1\2\3/'
如果你想保留三个以上的字段,这些内容可能会更好:
sed -r 's/(([^,]+,){2}([^,]+)).*/\1/'
使用awk
,您可以执行以下操作:
awk -v OFS=',' -F, '{NF=3; print}'
答案 1 :(得分:4)
awk -F, '$0=$1 FS $2 FS $3' file
应该做你想做的事。
答案 2 :(得分:1)
也许它不一样,但是删除第三个逗号之后的所有内容,是不是只打印.csv文件的前三个字段?如果是这样,你可以简单地做(类似于上面建议的那样):
echo A, B, C, D, E | awk -F, 'BEGIN { OFS = "," } {print $1,$2,$3}'
或
echo A, B, C, D, E | awk -F, '{print $1","$2","$3}'
答案 3 :(得分:0)
这可能适合你(GNU sed):
sed 's/,/\n/3;P;d' file
这将用换行符替换第三个逗号,然后打印到换行符并删除剩余的模式空间。