簡體   English   中英

awk替換序列化的數字行並上移其他行

[英]awk replace serialized number lines and move up other lines

我有一個具有以下格式的文件

1 - descrio #944
name
address
2 - desanother #916 
name
address
3 - somedes #957 
name
address

我想作為輸出

Usercode #944, name, address
Usercode #916, name, address
Usercode #957, name, address 

awk

awk 'NR%3 == 1{sub(/^.*#/, "Usercode #")};{ORS=NR%3?", ":"\n"};1' file
Usercode #944, name, address
Usercode #916, name, address
Usercode #957, name, address

對於可變數量的行

awk -v RS='(^|\n)[[:digit:]]+[[:blank:]]*-[[:blank:]]*' '{sub(/\n$/, "");
gsub(/\n/, ", "); printf "%s", $0""RT}END{print ""}' file

如果您的任何描述中都沒有# ,請嘗試:

sed -e 's/.*#/Usercode #/;N;N;s/\n/, /g' input

您也可以嘗試使用此命令,

$ paste -d'~' - - - < ccc | sed 's/^[^#]*/Usercode /g;s/~/, /g'
Usercode #944, name, address
Usercode #916, name, address
Usercode #957, name, address

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM