我很难打开制表符分隔文件。客户端说它肯定是制表符分隔,但似乎没有文本限定符。
我正在运行此声明:
awk '{OF=OFS="\t"}{print $1,$2,$10,$12,$14,$20}' AECPRDA.TAB | head -10
和我得到的输出:
+-----------------------------------------------------------------------+
| 22746528 BKEN48DVD NEVER 050 R N |
| 22746535 BKEN48BR NEVER 050 R N |
| 25584998 WD1194190DVD DTS) / DOL 29.99 |
| 21548598 DSND001906102.2 / 001 11.49 8 |
| 25812794 WHV1000292717BR / 050 PG13 N |
| 25812787 WHV1000284958DVD SPEC GRAVITY / PG13 |
| 21425462 PBSDMST64400DVD SEASON (3PC) CLASSIC: 050 |
| 25584974 WD1194170BR (WS DTS DIGC) AC3 |
| 21388262 HBO1000394029DVD 3 OF SEASON 59.98 |
| 25688450 WD11955700DVD / DOL) THE 050 |
+-----------------------------------------------------------------------+
我不相信这些列是正确的“标签”:
这是文件的纯文本示例:
22746528 BKEN48DVD AW40 48 18 METALLICA (2PC) THROUGH THE NEVER (2PC) 050 090 R 12.99 19.98 85611500487 01/28/2014 N N 30 1 A 1 11/27/2013 01/24/2014 11/27/2013 11/27/2013
22746535 BKEN48BR AW40 48 BR METALLICA (2PC) THROUGH THE NEVER (2PC) 050 090 R 16.25 24.98 85611500488 01/28/2014 N N 30 1 A 2 11/27/2013 01/24/2014 11/27/2013 11/27/2013
25584998 WD1194190DVD 0819 1194190 18 FROZEN / (WS DOL DTS) FROZEN / (WS DOL DTS) 050 110 G 21.25 29.99 78693683896 03/18/2014 N N 0 2 A 3 12/20/2013 03/20/2014 12/20/2013 12/20/2013
21548598 DSND001906102.2 0107 001906102 02 FROZEN / O.S.T. FROZEN / O.S.T. 001 024 11.49 13.95 05008729574 11/25/2013 N N 8 1 E 4 10/07/2013 03/20/2014 10/07/2013 10/07/2013
25812794 WHV1000292717BR 0526 1000292717 BR GRAVITY / (UVDC) GRAVITY / (UVDC) 050 093 PG13 29.49 35.99 88392924457 02/25/2014 N N 30 1 E 5 01/16/2014 02/11/2014 01/16/2014 01/16/2014
我的AWK命令出错了吗?为什么标签没有正确设置?我缺少一个隐藏的“空间”资格赛吗?
这是我从某人那里获得的解释,但我想使用AWK NOT excel(gd forbid)实现它:
制表符分隔符可能不会排列。选项卡字符已定义 不同的操作系统。通常它被定义为 显示时有4或5个空格。所以如果你的艺术家名字是5 字符,然后是标签字符,然后标题将从 字符位置9.如果下一行,艺术家是20个字符 长,然后是制表符,然后标题会出现在位置 24.希望这会有所帮助。 (另一个想法,告诉用户在Excel中打开一个空白电子表格并使用文本导入)
非常感谢你的指导!
答案 0 :(得分:0)
这应该做:
awk 'BEGIN {FS=OFS="\t"} NR<=10 {print $1,$2,$10,$12,$14,$20}' AECPRDA.TAB
答案 1 :(得分:0)
我已经解决了!
而不是使用这种制表符:"\t"
我需要使用$'\t'
我没有找到有关原因的文档。
最终答案:
awk -F$'\t' 'BEGIN{OF=OFS}{print $1,$2,$10,$12,$14,$20}' AECPRDA.TAB | head -10