0
A
回答
2
{
split($0, a, /,/)
j=1
for(i=1; i<=length(a); ++i) {
if(match(b[j], /\\$/)) {
b[j]=b[j] "," a[i]
} else {
b[++j] = a[i]
}
}
for(k=2; k<=length(b); ++k) {
print b[k]
}
}
- 分割成阵列
a
,使用 ',
' 作为分隔符 - 构建阵列
b
从a
,合并,在 '\
' - 打印阵列
b
(注结束线:开始在2以来,因为第一项是空白的)
此解决方案假设(现在)',
'是唯一一个以'\
'逃脱的字符 - 也就是说,不需要处理输入中的任何\\
,也不需要奇怪的组合,例如\\\,\\,\\\\,,\,
。
2
{
gsub("\\\\,", "!Q!")
n = split($0, a, ",")
for (i = 1; i <= n; ++i) {
gsub("!Q!", "\\,", a[i])
print a[i]
}
}
1
我不认为AWK有什么内置支持这样的事情。这里的解决方案并不像DigitalRoss的那么简短,但应该不会有意外击中你制作的字符串(!Q!)的危险。由于它使用if
进行测试,因此可以将其扩展为注意字符串末尾是否实际上有\\,
,这应该是一个转义斜线而不是逗号。
BEGIN {
FS = ","
}
{
curfield=1
for (i=1; i<=NF; i++) {
if (substr($i,length($i)) == "\\") {
fields[curfield] = fields[curfield] substr($i,1,length($i)-1) FS
} else {
fields[curfield] = fields[curfield] $i
curfield++
}
}
nf = curfield - 1
for (i=1; i<=nf; i++) {
printf("%d: %s ",i,fields[i])
}
printf("\n")
}
+0
我认为这是你感兴趣的所有分裂,因此将FS设置为逗号分割。如果你只是在一个子字符串上执行此操作,请使用系统PAUSE的相同方法的版本。 – Cascabel 2009-09-23 20:36:29
相关问题
- 1. Firefox忽略CSS逗号分隔的类
- 2. 使用python分隔带分隔符的字符串,而忽略引号内的分隔符和转义引号
- 3. 如何使用awk忽略逗号?
- 4. Java正则表达式用逗号分隔,但忽略逗号内的逗号
- 5. 用逗号分隔字符串,但有条件(忽略用逗号分隔的单个词)
- 6. JavaScript:分割逗号分隔的字符串,但忽略花括号
- 7. 如何转换管道分隔以逗号分隔的转义
- 8. 用逗号使用AWK分隔或低于所用逗号使用AWK分隔或标签SED以下
- 9. numpy.loadtxt:如何忽略出现在引号内的逗号分隔符?
- 10. 分割字符串用逗号而忽略括号或引号逗号
- 11. 转换逗号分隔字符串JSON
- 12. 忽略逗号CIN
- 13. 忽略逗号分隔列表中的最后一个元素
- 14. 带有分隔标签的PHP CSV导入 - 忽略逗号?
- 15. 使用awk忽略CSV文件字段中的逗号
- 16. Sparklyr忽略行分隔符
- 17. 加入分隔符忽略
- 18. 包含逗号与逗号分隔符的分割字符串
- 19. KeyValueTextInputFormat逗号分隔符
- 20. 删除逗号分隔符
- 21. 熊猫阅读CSV忽略逗号分隔,每行
- 22. 用逗号分隔
- 23. Python csv.reader用逗号分隔项目,但忽略双引号内的对象
- 24. 逗号分隔符号字符串
- 25. 逗号分隔
- 26. 逗号分隔
- 27. 用逗号分隔多个逗号分隔的csv文件
- 28. dimple tickFormat忽略分组逗号
- 29. 用逗号分隔的字符串
- 30. 分割字符串,引号内忽略分隔符(蟒蛇)
只要你从未在你的文本中拥有'!Q!',这将会起作用。 – 2009-09-23 20:30:02