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. 拆分逗号分隔的字符串,但忽略逗号整个字
- 5. Java正则表达式用逗号分隔,但忽略逗号内的逗号
- 6. 正则表达式用逗号分隔字符串,忽略空格逗号
- 7. 用逗号分隔字符串,但有条件(忽略用逗号分隔的单个词)
- 8. 转换被逗号分隔值,以逗号分隔字符串
- 9. Jquery自动完成:如何忽略逗号作为分隔符
- 10. 何时省略逗号分隔符
- 11. JavaScript:分割逗号分隔的字符串,但忽略花括号
- 12. 如何转换管道分隔以逗号分隔的转义
- 13. 的Javascript:用逗号分割的字符串,但忽略引号逗号
- 14. 用逗号使用AWK分隔或低于所用逗号使用AWK分隔或标签SED以下
- 15. cfspreadsheet转义逗号逗号分隔的行插入
- 16. 用逗号分割字符串,但忽略双引号内的逗号?
- 17. numpy.loadtxt:如何忽略出现在引号内的逗号分隔符?
- 18. 分割字符串用逗号而忽略括号或引号逗号
- 19. 转换逗号分隔字符串JSON
- 20. 忽略逗号串
- 21. 忽略逗号CIN
- 22. 带有分隔标签的PHP CSV导入 - 忽略逗号?
- 23. 忽略逗号分隔列表中的最后一个元素
- 24. 使用awk忽略CSV文件字段中的逗号
- 25. Python的拆分忽略逗号
- 26. 加入分隔符忽略
- 27. Sparklyr忽略行分隔符
- 28. nextLine()忽略分隔符“\\ n”
- 29. 包含逗号与逗号分隔符的分割字符串
- 30. 在一个字符串忽略逗号之间用逗号
只要你从未在你的文本中拥有'!Q!',这将会起作用。 – 2009-09-23 20:30:02