我想使用awk在双管道||
上拆分字段。这是我的代码:
这是我正在使用的代码。
BEGIN {
FS="/|/|"
}
{
print $2
print $1
}
答案 0 :(得分:1)
您需要使用反斜杠,而不是正斜杠来转义管道字符。他们还需要双重逃脱:
$ awk 'BEGIN{FS="\\|\\|"}{print $2; print $1}' <<< "a||b"
b
a
它们需要双重转义的原因是它们被有效地解析了两次。在从字符串到正则表达式模式的转换中丢失了第一个反斜杠,并且需要第二个反斜杠,因此|
不会被解释为正则表达式OR
。
答案 1 :(得分:0)
其他一些变体:
awk -F"\\\|\\\|" '{print $2; print $1}' <<< "a||b"
b
a
awk -F'\\|\\|' '{print $2; print $1}' <<< "a||b"
b
a
awk -F"[|][|]" '{print $2; print $1}' <<< "a||b"
b
a
awk -F'[|][|]' '{print $2; print $1}' <<< "a||b"
b
a