如何在UNIX下输入特殊的分隔符号

发布于 2022-09-10 00:21:12 字数 563 浏览 13 评论 7

文件中有特殊的分隔符号"※",无法把这个文件中的某些字段用awk命令打印出来。请大侠们帮帮忙!
※  65026 ※  10002 ※       150 ※          0 ※   20100401 ※   20100424 ※   70546 ※ 3 ※ 0
※  65027 ※  16003 ※        19 ※          0 ※   20100501 ※   20100424 ※   7054-2 ※ 6 ※ 0

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

机场等船 2022-09-11 03:20:08

本帖最后由 树袋熊 于 2010-08-26 10:11 编辑

虽然偶让你自己写脚本,可是偶还是忍不住手欠,给你写了个命令行, 在偶的机器上很灵地,哈哈,
我把你上面的文件粘贴到我机器上,名字ABC.TXT,那个垃圾号变成了问号,在你机器上估计也是问号.别的号也没有关系:

树袋熊$ root cat abc.txt
?  65026 ?  10002 ?       150 ?          0 ?   20100401 ?   20100424 ?   70546 ? 3 ? 0
?  65027 ?  16003 ?        19 ?          0 ?   20100501 ?   20100424 ?   7054-2 ? 6 ? 0
VLPAR
树袋熊$ cat abc.txt |awk '{s=0; for (i=1;i<=NF;i++) ( $i != "?" ) || ($i=""); print $0}'
65026  10002  150  0  20100401  20100424  70546  3  0
65027  16003  19  0  20100501  20100424  7054-2  6  0

现在输出变成你想要的了,你想怎么处理都行了.
如果你机器上可以看到※
就把命令换成这样:
cat abc.txt |awk '{s=0; for (i=1;i<=NF;i++) ( $i != "※" ) || ($i=""); print $0}'
或者:
cat abc.txt |awk '{s=0; for (i=1;i<=NF;i++) ( $i != "※" ) || ($i=""); print $0}'
然后你自己去tryh

强烈要求把俺上面的命令放入大学计算机课教材,有循环,有变量初始化,有判断语句,还有AWK,还有垃圾,但是不影响运行,关键还这么短,呵呵 .

亽野灬性zι浪 2022-09-11 03:20:07

偶受打酱油的那个CUT的启发,给你出个主意:
你可以写个过滤器脚本,读入每个字符,然后进行置换,如果是数字就保持不变,如果不是数字,减号留下,其他的字符是你不需要的就替换成空格,这样用这个过滤器可以把你的文件变成另外一个文件,而新文件显然不含有这些汉字字符. 记住别把行号给换成别的,不然你就不分行了.
偶不给你写脚本,你需要自己写喔.嘿嘿.

缪败 2022-09-11 03:19:50

是的,就是字符集的问题。

海的爱人是光 2022-09-11 03:19:36

按字节cut难道不需要输入分隔符号吗!能否说得具体点。

捶死心动 2022-09-11 03:06:48

是不是字符集的问题呢!

沫尐诺 2022-09-11 00:13:51

哈哈,汉化UNIX.西文UNIX不支持这个字符也是应该的吧?

踏雪无痕 2022-09-10 11:24:45

按字节cut呢

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文