无法在文本文件上使用SED命令删除撇号

时间:2020-03-06 23:46:27

标签: bash sed

我正在尝试从文本文件中提取数字,并且一直在使用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

还可以删除每行的前四个逗号吗?

2 个答案:

答案 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"

相关问题