【发布时间】:2021-10-15 14:31:38
【问题描述】:
我已经尝试了几个小时来对我正在从 CSV 转换为管道分隔的文件执行以下操作。转换后,我只想删除两个管道之间的管道。不知道有没有可能。
例子:
原始输入
X, Y, This is a | test for me, or
X, Y, This is a|test for me,
原始输出:
| X | Y | This is a | test for me| or
|X|Y|This is a|test for me|
期望的输出:
| X | Y | This is a test for me|
我尝试过,但我做不到,找不到 regexpr 或 sed - regexp 对我来说一直很难。
我是 C 语言的新手,脚本。我处理了转换,如果我们得到类似街道名称、apt 编号的东西,所以我们删除了 name 和 apt 之间的逗号,但保留了要转换为管道的数字之后的一个。
我做了一个cat 和几个sed 事件来处理其他事情,你认为最好在那里做吗?我有1k 多行吗?它使用 awk 作为我也不熟悉的部分脚本。
我的问题是最好的解决方案,还是应该在将其转换为管道之前处理它?我认为脚本的作用也是用双引号括起来,例如“街道名称,apt #”,这样它就可以删除引号内的逗号。
几次尝试都没有运气
cat <input> | sed 's/ | / /g' | tr , '|'
或:
cat <input> | sed 's/ | / /g;s/,/\|/g'
这是执行我上面描述的逗号的脚本,当它作为我的示例时,我需要添加管道处理程序,否则它将我的字符串分成两个
有人想帮忙吗?
【问题讨论】:
-
它与 C 有什么关系?不要垃圾标签
-
顺便说一句,你想避免useless use of
cat -
如果您在管道中的其他地方使用 Awk,您可能应该将所有内容重构到 Awk 脚本中。 awk 可以做
sed可以做的所有事情(还有cat、cut、head等)。 -
@tripleee 该脚本是由一位高级开发人员传递的,我不知道如何执行 awk,它为逗号完成了所有工作,但我可以弄清楚,所以我可以复制管道,如果我这样做明白了,我不知道该怎么做