我有以下数据,并且想要匹配某些字符串,如下所述。
FTUS80 KWBC 081454 AAA\r\r TAF AMD #should match 'AAA'
LTUS41 KCTP 082111 RR3\r\r TMLLNS\r #should match 'RR3' and 'TMLLNS'
SRUS55 KSLC 082010\r\r HM5SLC\r\r #should match 'HM5SLC'
SRUS55 KSLC 082010\r\r SIGC \r\r #should match 'SIGC ' including whitespace
我需要满足以下条件。但是,当我将它们放在一起时它不起作用,所以我知道我有错误。预先感谢。
答案 0 :(得分:0)
目前尚不清楚这行的结尾是什么,但是假设它是Unix的\n
,以下表达式将按要求捕获字符串(添加双引号以显示空白)
sed -rne 's/^.{18} ?([A-Z0-9]{3,3})?\r{2}?([^\r]+)?\r.*$/"\1\2"/p' text.txt
结果
"AAA"
"RR3 TMLLNS"
" HM5SLC"
" SIGC "
.{18}
前18个字符?([A-Z0-9]{3,3})?
匹配AAA或RR3,但没有前导空格\r{2}?([^\r]+)?\r
与TMLLNS
,HM5SLC
或SIGC
匹配,后跟2个\r
和1个\r
个字符。