嗨,感谢提前阅读,也许可以帮助我。 我有一个类似于下面的示例的日志,我希望ID,时间和日期中的所有文本都在一行中,直到下一个id,时间和日期。我试过一些例子,但还没找到合适的例子...... 这是文字。它在latin1我认为这就是为什么它看起来很有趣。
1334361 05:35:47 15-10-15 Talgrupp : Sk�n RAPS-03 Adr : Burl�vsbadet Ort : Omr : M170 Kommun : Burl�v Brand ute - fordon Personbil �vrigt Till�ggsinfo : �rende Id : 2 A 1334361 05:36:47 15-10-15 Talgrupp : Sk�n RAPS-03 Adr : Burl�vsbadet Ort : Omr : M170 Kommun : Burl�v Brand ute - fordon Personbil �vrigt Till�ggsinfo : �rende Id : 2 P` 0742963 09:12:14 15-10-15 �nr : 5738690 VG�t RAPS-32 Trafikolycka - flera fordon Personbil LV 200 Ort : Sk�vde RAPS 32 X=6494376 Y=1395320 Nyckel : Omfattning : L�g
答案 0 :(得分:0)
用awk:
awk '/^[0-9]+/ && NR>1 {print ""}; END {print ""}; {$1=$1; printf "%s", $0}' file
打印每行不带换行符,对于以数字开头的行和最后一行后的行,打印换行符。我添加$1=$1
强制awk使用输出字段分隔符重写行,默认情况下是一个空格。
1334361 05:35:47 15-10-15 Talgrupp : Sk�n RAPS-03Adr : Burl�vsbadetOrt :Omr : M170Kommun : Burl�vBrand ute - fordonPersonbil�vrigtTill�ggsinfo :�rende Id : 2A
1334361 05:36:47 15-10-15 Talgrupp : Sk�n RAPS-03Adr : Burl�vsbadetOrt :Omr : M170Kommun : Burl�vBrand ute - fordonPersonbil�vrigtTill�ggsinfo :�rende Id : 2P`
0742963 09:12:14 15-10-15 �nr : 5738690VG�t RAPS-32Trafikolycka - flera fordonPersonbilLV 200Ort :Sk�vdeRAPS 32X=6494376 Y=1395320Nyckel :Omfattning : L�g
答案 1 :(得分:0)
如果你有权访问正则表达式,就像这样
(?m)(?:\r?\n|\r)^\s+(?=[^\S\r\n])
修改这个(?:\r?\n|\r)\s+(?=[^\S\r\n])
做同样的事情。
会导致此
1334361 05:35:47 15-10-15 Talgrupp : Sk�n RAPS-03 Adr : Burl�vsbadet Ort : Omr : M170 Kommun : Burl�v Brand ute - fordon Personbil �vrigt Till�ggsinfo : �rende Id : 2 A
1334361 05:36:47 15-10-15 Talgrupp : Sk�n RAPS-03 Adr : Burl�vsbadet Ort : Omr : M170 Kommun : Burl�v Brand ute - fordon Personbil �vrigt Till�ggsinfo : �rende Id : 2 P`
0742963 09:12:14 15-10-15 �nr : 5738690 VG�t RAPS-32 Trafikolycka - flera fordon Personbil LV 200 Ort : Sk�vde RAPS 32 X=6494376 Y=1395320 Nyckel : Omfattning : L�g
答案 2 :(得分:0)
我无法得到任何答案来做我想要的事情。所以我必须这样做,因为我的老师总是告诉我们,向前迈出一小步,直到你解决它。它成了一个最终解决它的bash脚本。也许其他人需要它,所以我在这里发布。基本的东西,但有效。
#!/bin/bash
# Filvariabel
cd /medianas/html
fil="extra.flt"
# Tar bort tomma rader
if [ -f ${fil} ]
then
grep -v '^\s*$' $fil > $fil.test
# Tar bort linefeed
tr '\r\n' ' ' < $fil.test > $fil.labb
# Tar bort alla space och ersätter med en space
tr -s " " < $fil.labb > $fil.test
sed 's/\ [0-9][0-9][0-9][0-9][0-9][0-9][0-9]/\n&/g' $fil.test > $fil.klar
# Tar bort tmpfiler och original
rm $fil.test
rm $fil.labb
[[ -f $fil ]] && rm $fil
# Tar bort inledande blank per rad
sed -i 's/^ *//' $fil.klar
fi
/home/stefan/larm/fltmap-radio2.py &> /dev/null
答案 3 :(得分:0)
这个bashscript为我做了伎俩。也许可以帮助别人。
#top-bar