如何在双管道上拆分字段

时间:2015-02-18 09:25:59

标签: awk gawk

我想使用awk在双管道||上拆分字段。这是我的代码:

这是我正在使用的代码。

BEGIN  {     
    FS="/|/|"  
} 
{ 
    print $2 
    print $1 
}

2 个答案:

答案 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