从Unix

时间:2016-06-20 19:28:18

标签: shell unix

我得到一个由Pipe(|)分隔的数据文件,共有17列,在最后一列的末尾有不同的垃圾字符,这是我们不想要的。最后一列值如果存在,则值始终为时间戳,即YYYY-MM-DD HH:MI:SS,但有时候最后一列值也不存在。

我需要一种方法来删除行尾的垃圾字符,如果它完全存在的话。

  1|0059019539|12MO-V43|0000000001|0000000001||2015-08-06 15:25:04||2015-08-06 15:25:04|2016-08-05|0000000011|0000000001|-10.00|P000101581|V7|Action|2015-08-05 00:00:00
  1|0059019539|VAGR~V47|0000000001|0000000001||2015-08-06 15:25:04||2015-08-06 15:25:04|2016-08-05|0000000011|0000000001|-33.00|P000101581|33-12MO-V2|Action|2015-08-05 00:00:00^@^@^@^@

在示例中,第二行是垃圾字符。

2 个答案:

答案 0 :(得分:1)

cat ACTUALFILE.DATA|awk -F'|' '{ print $1 "|" $2 "|" $3 "|" $4 "|" $5 "|" $6 "|" $7 "|" $8 "|" $9 "|" $10 "|" $11 "|" $12 "|" $13 "|" $14 "|" $15 "|" $16 "|" substr($17, 1, 19)}' > BACKUPFILE.DATA

答案 1 :(得分:0)

当您的垃圾是二进制时,您可以尝试

strings ACTUALFILE.DATA > BACKUPFILE.DATA