我正在尝试从文本文件中提取数字,并且一直在使用SED命令删除不需要的字符。但是,我无法删除流浪撇号。
这是示例文本:
CLASSES SCORES
[u'Precipitate', u'Crystals', u'Other', u'Clear'] [0.8788071274757385, 0.050357233732938766, 0.038349077105522156, 0.03248654305934906]
这是期望的结果:
0.8788071274757385, 0.050357233732938766, 0.038349077105522156, 0.03248654305934906
这是我正在使用的代码:
echo running
sed -i '/^CLASSES/ d' ~/Desktop/testgcloud/results.txt
sed -i -e "s/Precipitate//g" -e "s/Other//g" -e "s/Crystals//g" -e "s/Clear//g" -e "s/u//g" ~/Desktop/testgcloud/results.txt
sed -i -e "s/\[//g" -e "s/\]//g" -e "s/\'//g" ~/Desktop/testgcloud/results.txt
echo finished running
这是代码的结果:
'', '', '', '' 0.8788071274757385, 0.050357233732938766, 0.038349077105522156, 0.03248654305934906
还可以删除每行的前四个逗号吗?
答案 0 :(得分:0)
sed -i.bkp -e '/^CLASSES/d' -e 's/^\[[^]]*\]\s\+\[//' -e 's/\]$//' sample.txt
-e 's/^\[[^]]*\]\s\+\[//'
-删除第一组[]
,周围的[]
和下一个[
-demo中的所有内容(请注意sed使用{ {1}}而非\+
,但其余部分相同)+
-删除结尾的-e 's/\]$//'
答案 1 :(得分:-1)
您可能不希望删除不需要的内容,而应该专注于想要的内容。
grep -Po '([0-9]+\.[0-9]+,? ?)+' input_file > ~/Desktop/testgcloud/results.txt
这将写入与以下格式匹配的结果文件内容:至少一个数字,十进制,至少一个数字以及可选的逗号和空格。似乎只需一步就可以解决您的问题。
如果您确实设置了sed,则以下内容将删除空的撇号以及可选的逗号和空格。
sed "s/'',\? \?//g"