如何在双管道上拆分字段
How to split fields on a double pipeline
我想使用 awk 在双管道上拆分字段 ||
。这是我的代码:
这是我正在使用的代码。
BEGIN {
FS="/|/|"
}
{
print
print
}
您需要使用反斜杠而不是正斜杠来转义管道字符。他们也需要双重转义:
$ awk 'BEGIN{FS="\|\|"}{print ; print }' <<< "a||b"
b
a
它们需要双重转义的原因是它们被有效地解析了两次。第一个反斜杠在从字符串到正则表达式模式的转换中丢失了,第二个反斜杠是必需的,这样 |
就不会被解释为正则表达式 OR
.
一些其他变体:
awk -F"\\|\\|" '{print ; print }' <<< "a||b"
b
a
awk -F'\|\|' '{print ; print }' <<< "a||b"
b
a
awk -F"[|][|]" '{print ; print }' <<< "a||b"
b
a
awk -F'[|][|]' '{print ; print }' <<< "a||b"
b
a
我想使用 awk 在双管道上拆分字段 ||
。这是我的代码:
这是我正在使用的代码。
BEGIN {
FS="/|/|"
}
{
print
print
}
您需要使用反斜杠而不是正斜杠来转义管道字符。他们也需要双重转义:
$ awk 'BEGIN{FS="\|\|"}{print ; print }' <<< "a||b"
b
a
它们需要双重转义的原因是它们被有效地解析了两次。第一个反斜杠在从字符串到正则表达式模式的转换中丢失了,第二个反斜杠是必需的,这样 |
就不会被解释为正则表达式 OR
.
一些其他变体:
awk -F"\\|\\|" '{print ; print }' <<< "a||b"
b
a
awk -F'\|\|' '{print ; print }' <<< "a||b"
b
a
awk -F"[|][|]" '{print ; print }' <<< "a||b"
b
a
awk -F'[|][|]' '{print ; print }' <<< "a||b"
b
a