我有一个如下所示的文件:
memory=500G
brand=HP
color=black
battery=5 hours
对于每一行,我想删除=
之后的所有内容以及=
。
最终,我希望得到类似的内容:
memory:brand:color:battery:
(每个单词后面都有冒号一行)
我可以使用单线sed命令吗?
答案 0 :(得分:2)
sed -e ':a;N;$!ba;s/=.\+\n\?/:/mg' /my/file
改编自this fine answer。
坦率地说,我发现这样的东西更具可读性:
cut -d = -f 1 /my/file | tr \\n :
答案 1 :(得分:1)
这是使用GNU awk
的一种方式:
awk -F= '{ printf "%s:", $1 } END { printf "\n" }' file.txt
结果:
memory:brand:color:battery:
如果您不希望在最后一个单词后面冒号,可以使用GNU sed
,如下所示:
sed -n 's/=.*//; H; $ { g; s/\n//; s/\n/:/g; p }' file.txt
结果:
memory:brand:color:battery
答案 2 :(得分:1)
这可能适合你(GNU sed):
sed -i ':a;$!N;s/=[^\n]*\n\?/:/;ta' file
答案 3 :(得分:1)
perl -F= -ane '{print $F[0].":"}' your_file
测试如下:
> cat temp
abc=def,100,200,dasdas
dasd=dsfsf,2312,123,
adasa=sdffs,1312,1231212,adsdasdasd
qeweqw=das,13123,13,asdadasds
dsadsaa=asdd,12312,123
> perl -F= -ane '{print $F[0].":"}' temp
abc:dasd:adasa:qeweqw:dsadsaa:
答案 4 :(得分:0)
我的命令是
第一步:
sed's /([a-z] +)(\ =。*)/ \ 1:/ g'文件名|猫> a
cat a
存储器:
品牌:
颜色
电池:
第二步:
sed -e'N; s / \ n //'a | sed -e'N; s / \ n //'
我的输出是
存储器:品牌:颜色:电池: