0

我需要一个 linux bash 脚本,它可以替换 name="this is a test" 中的空格。

例子:

<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

4 回答 4

3

使用 Python - 获取 HTML 文件,并从属性等于的input标签中删除空格,您可以使用:namethis 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属性的标签并应用您想要的任何逻辑 - 下面将从任何名称属性中删除空格:

for tag in soup.find_all('input', {'name': True}):
    tag['name'] = tag['name'].replace(' ', '')
于 2013-07-20T14:44:09.700 回答
0
>>> name = 'this is a test'
>>> ''.join(name.split())
'thisisatest'
于 2013-07-20T14:38:19.220 回答
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
于 2013-07-20T14:39:23.307 回答
0

这是一个 awk 单行

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

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

于 2013-07-20T15:56:31.927 回答