我在unix中使用以下行来解压缩.tar.gz文件并将所有文件推送到一个漂亮的CSV文件中。
> gunzip -c foo.tar.gz > foo.csv
问题是,文件附加了一种标题,如下所示:
path-to-csv-on-s3/foo.csv����������������������������000644 �000765 �000024 �00132244376 12501623550 027273� 0����������������������������������������������������������������������������������������������������ustar�00hills���������������������������staff���������������������������000000 �000000
我尝试过使用像
这样的东西gunzip -c s3-foo.tar.gz | sed "1 d" > foo.csv
删除第一行,但它也会删除所有列名。有人知道解决这个问题的简单方法吗?这是前几行数据的样子:
path-to-csv-on-s3/foo.csv000644 000765 000024 00132244376 12501623550 027273 0ustar00hillsstaff000000 000000 ������������������������������������������������������������������������������������������������������������������������������������������������������������������������"","id","price", "lala", "hooha"
1, some-ID, 45, 'blah', 'yay',
4, some-ID, 32, 'lah', 'yay!'
由于
答案 0 :(得分:1)
尝试将此用于您的sed表达式:sed -e '1 s/^.*\(\"\".*\)/\1/'
。
使用替换运算符,它看起来像s/pattern-to-math/replacement/
。我匹配行^
的开头,之后的任何内容.*
,然后是(...)
中的捕获组,后跟""
后跟任何内容.*
。在运算符的替换部分中,我只需放入捕获组\1
。
我使用echo "path-to-csv-on-s3/foo.csv000644 000765 000024 00132244376 12501623550 027273 0ustar00hillsstaff000000 000000 \"\",\"id\",\"price\", \"lala\", \"hooha\"" | sed -e '1 s/^.*\(\"\".*\)/\1/'"","id","price", "lala", "hooha"
进行了测试,似乎效果很好