作者hirokofan (笠原弘子 命!)
看板Linux
标题[问题] 请教换行符号取代的问题
时间Mon Jan 6 19:58:06 2020
为了将RouterOS的dhcp lease纪录整合成一行想要写个script去处理结果碰到问题
纪录档如下
3 D address=10.1.1.1 mac-address=FF:FF:FF:FF:FF:FF
client-id="1:ff:ff:ff:ff:ff:ff" address-lists="" server=dhcp-local
dhcp-option="" status=bound expires-after=7h36m38s last-seen=23m22s
active-address=10.1.1.1 active-mac-address=FF:FF:FF:FF:FF:FF
active-client-id="1:ff:ff:ff:ff:ff:ff" active-server=dhcp-local
host-name="VOIP_PHONE"
*纪录中每一行最後有一个空格,换行後最前面有五个空格
两笔纪录中间有一个空行,这个空行没有空格
简单的说就是要把 20 0A 20 20 20 20 20 变成一个 20,於是我用下面两种方法
sed -i 's/\x0a\x20\x20\x20\x20\x20//g' dhcp-lease.txt
sed -i 's/\x20\x0A//g' dhcp-lease.txt
但结果是只有空格会被取代,换行符号不会被处理( \x0a 改成 \n 也一样)
试了半天只有 tr 可以处理掉换行( \012 ),後来是分成三步骤取代才成功
tr -s "\012" "\011" < dhcp-lease.txt >temp2.txt
sed 's/ \x09 //g' temp2.txt >temp3.txt
sed 's/\x09/\n/g' temp3.txt >temp4.txt
但总觉得这样子不漂亮,是否有更好的解法可以参考?
--
~hc是个有美女就好的软派阿宅,各种被大家批评的作品他都有办法看的津津有味~
路人:
BLEACH超好看的 hc:
不断创造出神入化视效大决,久保老师总是能让读者惊奇。
路人:
火影忍者超好看的 hc:
用BL映衬女性的幽怨哀愁,岸本老师编剧有如神之一手。
路人:
网球王子超好看的 hc:
持续挑战自我与人类的极限,许斐老师重新定义进化一词。
路人:
卡通柯南超好看的 hc:
案件後藏着绵密的爱恨情仇,青山老师何时挑战言情小说?
路人:
舰娘动画超好看的 hc:
....他喵的你当我潘子吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.236.55.155 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Linux/M.1578311890.A.8E2.html
1F:推 Gold740716: sed ':start / $/ { N; s/\n //; b start }' 01/06 22:13
2F:→ Gold740716: sed 一次读一行,并删掉结尾的换行符,基本上匹配不到 01/06 22:14
3F:→ Gold740716: 换行符,要手动用 N 读下一行,或是用 sed -z 01/06 22:16
4F:→ hirokofan: 感谢~ 01/07 06:41
5F:推 bamchisu: 有强者给推 01/07 10:02