输入:
| |19.2°E| | |Astra 1L| |11597.00|V|26|Astra 1L|DVB-S|QPSK|22000| |5/6|ASTRA 1|, 33.8 Mbps |NID:1|TID:1026| | |
输出:
19.2°E|Astra 1L|11597.00|V|26|Astra 1L|DVB-S|QPSK|22000|5/6|ASTRA 1|, 33.8 Mbps |NID:1|TID:1026
答案 0 :(得分:0)
尝试使用sed之类的东西:
echo $line | sed -r 's/\|\s*\|//g'
答案 1 :(得分:0)
您可以使用此sed:
sed 's/|[[:blank:]]\{1,\}//g; s/^|//; s/|$//' file
19.2°E|Astra 1L|11597.00|V|26|Astra 1L|DVB-S|QPSK|22000|5/6|ASTRA 1|, 33.8 Mbps |NID:1|TID:1026
它也适用于非gnu sed,如BSD sed。
答案 2 :(得分:0)
通过grep和sed,
..... | grep -oP '(?<=\|)[^|]*[^|\s][^|]*' | sed ':a;N;$!ba;s/\n/|/g'
示例:
$ echo '| |19.2°E| | |Astra 1L| |11597.00|V|26|Astra 1L|DVB-S|QPSK|22000| |5/6|ASTRA 1|, 33.8 Mbps |NID:1|TID:1026| | |' | grep -oP '(?<=\|)[^|]*[^|\s][^|]*' | sed ':a;N;$!ba;s/\n/|/g'
19.2°E|Astra 1L|11597.00|V|26|Astra 1L|DVB-S|QPSK|22000|5/6|ASTRA 1|, 33.8 Mbps |NID:1|TID:1026
答案 3 :(得分:0)
由GNU sed
sed -r ':a s/\|\s*\|/|/g ;t a' infile
|19.2°E|Astra 1L|11597.00|V|26|Astra 1L|DVB-S|QPSK|22000|5/6|ASTRA 1|, 33.8 Mbps |NID:1|TID:1026|
如果您指定为变量,请使用此命令
echo $line |sed -r ':a s/\|\s*\|/|/g ;t a'