bash脚本替换html中的空格

时间:2013-07-20 14:30:57

标签: python html linux bash sed

我需要一个linux bash脚本,它可以替换name =“这是一个测试”中的空格。

示例:

<input name="this is a test" id="testing 1 2 3" />

会改为:

<input name="thisisatest" id="testing 1 2 3" />

编辑:脚本必须能够匹配双引号之间的任何内容。可能是这样的:

<input name="THIS STRING WILL VARY" id="testing 1 2 3" />

有什么想法吗?

4 个答案:

答案 0 :(得分:3)

使用Python - 获取HTML文件,并删除input属性等于name的{​​{1}}代码中的空格,您可以使用:

this is a test

回应:

  

我忘了说字符串“这是一个测试”可以是任何东西

您只需过滤掉所有from bs4 import BeautifulSoup with open('input') as fin, open('output', 'w') as fout: soup = BeautifulSoup(fin.read()) for tag in soup.find_all('input', {'name': 'this is a test'}): tag['name'] = tag['name'].replace(' ', '') fout.write(str(soup)) 属性的input标记并应用您想要的任何逻辑 - 以下内容将从任何名称属性中删除空格:

name

答案 1 :(得分:0)

>>> name = 'this is a test'
>>> ''.join(name.split())
'thisisatest'

答案 2 :(得分:0)

您可以使用sed

foo='<input name="this is a test" id="testing 1 2 3" />'
echo $foo | sed 's/this is a test/thisisatest/'

如果要在文件中执行此操作并保存,可以执行以下操作:

sed 's/this is a test/thisisatest/' filename > filename

答案 3 :(得分:0)

这是一个awk单行

awk '
    BEGIN {FS=OFS="\""} 
    {for (f=2; f<=NF; f++) if ($(f-1) ~ /name=$/) gsub(/ /, "", $f)} 
    1
' file

它使用双引号作为字段分隔符。因此,带引号的字符串将是奇数字段。