Unix-使用sed删除模式后的所有内容
我有一个如下所示的文件:Unix-使用sed删除模式后的所有内容,sed,Sed,我有一个如下所示的文件: memory=500G brand=HP color=black battery=5 hours 对于每一行,我都要删除=之后的所有内容以及= 最终,我想得到如下结果: memory:brand:color:battery: (每个单词后面都有冒号) 我可以使用一行sed命令吗 sed -e ':a;N;$!ba;s/=.\+\n\?/:/mg' /my/file 改编自 不过,坦率地说,我觉得这样的东西更具可读性: cut -d = -f 1 /my/file
memory=500G
brand=HP
color=black
battery=5 hours
对于每一行,我都要删除=
之后的所有内容以及=
最终,我想得到如下结果:
memory:brand:color:battery:
(每个单词后面都有冒号)
我可以使用一行sed命令吗
sed -e ':a;N;$!ba;s/=.\+\n\?/:/mg' /my/file
改编自
不过,坦率地说,我觉得这样的东西更具可读性:
cut -d = -f 1 /my/file | tr \\n :
改编自
不过,坦率地说,我觉得这样的东西更具可读性:
cut -d = -f 1 /my/file | tr \\n :
这里有一种使用GNU awk的方法:
awk -F= '{ printf "%s:", $1 } END { printf "\n" }' file.txt
结果:
memory:brand:color:battery:
memory:brand:color:battery
如果您不想在最后一个单词后面加冒号,可以像这样使用GNU-sed
:
sed -n 's/=.*//; H; $ { g; s/\n//; s/\n/:/g; p }' file.txt
结果:
memory:brand:color:battery:
memory:brand:color:battery
这里有一种使用GNU awk的方法:
awk -F= '{ printf "%s:", $1 } END { printf "\n" }' file.txt
结果:
memory:brand:color:battery:
memory:brand:color:battery
如果您不想在最后一个单词后面加冒号,可以像这样使用GNU-sed
:
sed -n 's/=.*//; H; $ { g; s/\n//; s/\n/:/g; p }' file.txt
结果:
memory:brand:color:battery:
memory:brand:color:battery
这可能适用于您(GNU-sed):
这可能适用于您(GNU-sed):
测试如下:
> 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:
测试如下:
> 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:
我的命令是
第一步:
sed的/([a-z]+)(\=.*)/\1:/g'文件名| cat>a
a类
内存:
品牌:
颜色:
电池:
第二步:
sed-e'N;s/\n/'a | sed-e'n;s/\n/'
我的输出是
内存:品牌:颜色:电池:我的命令是
第一步:
sed的/([a-z]+)(\=.*)/\1:/g'文件名| cat>a
a类
内存:
品牌:
颜色:
电池:
第二步:
sed-e'N;s/\n/'a | sed-e'n;s/\n/'
我的输出是
记忆:品牌:颜色:电池: