Name: firstname:jessica middlename:albert lastname:peters
phone: 872634823468
Mobile: 72364623646
Address: Apacrtment : CT APT , Road : MG Road , City : Mumbai
Job : Software developer.
Name: firstname:ram middlename:kishan lastname:pichai
phone: 3242342342
Mobile: 12343545435
Address: Apacrtment : Antop APT , Road : AT Road , City : Delhi
Job : Senior developer.
我想从特定行中复制特定值。 我可以使用egrep命令找到这些行。
例如
egrep "Name|Mobile|Address" test.log
Name: jessica albert peters
Mobile: 72364623646
Address: Apartment : CT APT , Road : MG Road , City : Mumbai
我怎样才能从上述各行中找出特定的字符串并将其保存为逗号分隔的值。 例如,我正在寻找
之类的输出expected output
Name,Mobile,City
jessica,72364623646,Mumbai
ram,12343545435,Delhi
答案 0 :(得分:1)
如果您的实际Input_file与所示示例相同,那么以下内容可能会对您有所帮助。
awk '
BEGIN{
OFS=","
print "Name,Mobile,City"
}
/^Name:/{
sub(/.*:/,"",$2)
val=$2
next
}
/^Mobile/{
val=val OFS $2
next
}
/City/{
match($0,/City : .*/)
print val OFS substr($0,RSTART+7,RLENGTH-7)
val=""
}' Input_file
答案 1 :(得分:1)
您可以将此awk
与空白的RS
一起使用:
awk -v OFS=, -F ' *[,:] *|[[:space:]]+' -v RS= 'BEGIN{print "Name", "Mobile", "City"}
{print $3, $11, $20}' file
Name,Mobile,City
jessica,72364623646,Mumbai
ram,12343545435,Delhi
答案 2 :(得分:0)
考虑该文件,请遵循您显示的这种模式
以下命令可帮助您进行捕获:
名称:cat teste.txt | grep -e "Name" | awk -F" " '{ print $2 }' | awk -F":" '{ print $2 }'
手机:cat teste.txt | grep -e "Mobile" | awk -F " " '{ print $2 }'
地址:cat teste.txt | grep -e "Address" | awk -F"City : " '{ print $2 }'
在此之后,只需使用foreach循环即可将csv文件写入