我有一个包含MARC格式书籍数据的文件,其中一些是ISBN.我想将这些行替换为该ISBN的Google图书ID(如果存在).这是到目前为止的代码,它最终删除了这些代码:
perl -pe "s#ISBN(.*)#$(wget --output-document=- --quiet --user-agent=Mozilla/5.0 \"http://books.google.com/books?jscmd=viewapi&bibkeys=\1\")#mg" < 5-${file} > 6-${file}
PS:Google在使用自动化工具方面有点模糊:Books Data API推荐使用curl/wget等工具,但没有关于如何避免在使用此类工具时被阻止的说明.我也很确定我在ToS中看到一个条款,说用户无法发送自动查询,但我再也找不到了.这是讨论在他们的论坛.
我使用的是 Ubuntu 10.04。我创建了一个 shell 脚本。编写脚本后,右键单击文件并选择 Gedit 即可编辑代码。我想知道如何使脚本在 Gedit 中不可读。
为了测试OpenVPN隧道设置,我需要在尝试通过隧道发送内容之前检测新启动的OpenVPN守护程序何时建立了隧道(或尝试并且未能这样做).
我刚刚了解到使用泛型的结构被声明为struct Foo<T>,并且实现被声明为impl<T> Foo<T>.在书中解释下列方式的差异:
请注意,我们必须声明
T只是后impl才能使用T的类型Point<T>.声明T作为通用型后impl是除锈是如何知道在尖括号中的类型Point是一个泛型类型,而不是一个具体类型.
再一次,我是一个新手,但不能同样的论点,必须声明struct<T> Foo<T>(甚至可能fn<T> foo<T>(bar: T))?
Mypy 认为这对以下情况有效strict = true:
from typing import Dict, TypeVar
KeyType = TypeVar("KeyType")
ValueType = TypeVar("ValueType")
class InvertibleDict(Dict[KeyType, ValueType]):
def __inverse__(self) -> "InvertibleDict[ValueType, KeyType]":
new_instance: "InvertibleDict[ValueType, KeyType]" = self.__class__()
for key, value in self.items():
new_instance[value] = key
return new_instance
Run Code Online (Sandbox Code Playgroud)
但是,它不接受相同代码的以下更简洁版本,在最后一行说“关键字必须是字符串”:
from typing import Dict, TypeVar
KeyType = TypeVar("KeyType")
ValueType = TypeVar("ValueType")
class InvertibleDict(Dict[KeyType, ValueType]):
def __inverse__(self) -> "InvertibleDict[ValueType, KeyType]":
return self.__class__(**{value: key for key, value in self.items()})
Run Code Online (Sandbox Code Playgroud) 我有用于监视驻留在一个3秒的睡眠无限循环我们的某些方面的应用和简单的显示输出一些小的脚本,ps aux | grep -i app_name或者mysql -e "SHOW SLAVE STATUS\G"只是这样我就可以轻松地观看了几分钟,没有击中任何按键,什么我想知道我是如何'刷新'屏幕上的值而不是附加到它们,我想我最好的例子是顶部,它刷新值而不是连续打印到屏幕上.
任何帮助将非常感激.
谢谢
我正在尝试自动从HTML文件中删除一些内容,并且我使用以下命令将所有内容剥离到有用的数据:
perl -pi.bak -e 'undef $/; s/^.*?<pre>//s' $file
Run Code Online (Sandbox Code Playgroud)
但是,出于某种原因,这将仅留下HTML文件的第一行(DOCTYPE声明).