有没有办法,没有双循环来完成以下sed命令的作用
输入:
Time
Banana
spinach
turkey
Run Code Online (Sandbox Code Playgroud)
sed -i "/Banana/ s/$/Toothpaste/" file
输出:
Time
BananaToothpaste
spinach
turkey
Run Code Online (Sandbox Code Playgroud)
到目前为止我所拥有的是一份双重清单,需要很长时间才能完成.
列表a有一堆数字列表b有一堆相同的数字,但顺序不同
对于A中的每个条目,我想在B中找到具有相同数字的行,并在其末尾添加值C.
希望这是有道理的,即使我的例子没有.
我在Bash中做了以下操作但它工作得很慢但是速度很慢......
for line in $(cat DATSRCLN.txt.utf8); do
srch=$(echo $line | awk -F'^' '{print $1}');
rep=$(echo $line | awk -F'^' '{print $2}');
sed -i "/$(echo $srch)/ s/$/^$(echo $rep)/" tmp.1;
done
Run Code Online (Sandbox Code Playgroud)
谢谢!
所以我试图将命令的输出存储到变量中.虽然我不希望它在运行命令时显示输出...
我现在的代码如下......
def getoutput(*args):
myargs=args
listargs=[l.split(' ',1) for l in myargs]
import subprocess
output=subprocess.Popen(listargs[0], shell=False ,stdout=subprocess.PIPE)
out, error = output.communicate()
return(out,error)
def main():
a,b=getoutput("httpd -S")
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
如果我把它放在一个文件中并在命令行上执行它.即使我在代码中没有print语句,我也得到以下输出.如何在保存输出的同时防止这种情况?
#python ./apache.py
httpd: Could not reliably determine the server's fully qualified domain name, using xxx.xxx.xxx.xx for ServerName
Syntax OK
Run Code Online (Sandbox Code Playgroud) 我正在学习单元测试,但是我很难理解如何模拟单元测试的功能.我已经回顾了许多操作方法和示例,但这个概念没有足够的转让我在我的代码中使用它.我希望得到这个能够帮助我的实际代码示例.
在这种情况下,我试图模拟isTokenValid.
这是我想要模拟的示例代码.
<in library file>
import xmlrpc.client as xmlrpclib
class Library(object):
def function:
#...
AuthURL = 'https://example.com/xmlrpc/Auth'
auth_server = xmlrpclib.ServerProxy(AuthURL)
socket.setdefaulttimeout(20)
try:
if pull == 0:
valid = auth_server.isTokenValid(token)
#...
Run Code Online (Sandbox Code Playgroud)
在我的单元测试文件中
import library
class Tester(unittest.TestCase):
@patch('library.xmlrpclib.ServerProxy')
def test_xmlrpclib(self, fake_xmlrpclib):
assert 'something'
Run Code Online (Sandbox Code Playgroud)
我如何模拟'function'中列出的代码?令牌可以是任何数字作为字符串,有效将是一个int(1)
我有一个可以在 bash shell 中运行的脚本。我将其放入 Ansible 中,导致 playbook 出现异常。
- name: add mnt to ignore_filesystems
shell: |
grep ignore_filesystem {{ cdm_path }} | awk -F'=' '{print $2}' | egrep '\^\\/mnt\*'
if [ $? -eq 0 ]; then
echo 'do nothing';
else
echo 'no';
items=$(grep ignore_filesystem {{ cdm_path }} | awk -F'=' '{print $2}')
if [ ${#items} -gt 1 ]; then
echo 'making the change'
sed -ie '/ignore_filesystem/ s~$~|^\\/mnt*~' {{ cdm_path }}
else
echo 'making the change'
sed -ie '/ignore_filesystem/ s~ignore_filesystem = …Run Code Online (Sandbox Code Playgroud) 我想让socketio正常工作.当我使用以下javascript加载我的页面时.它尝试按预期拉出socket.io页面,但每次都找不到404.
<div id="result"></div>
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script src="https://cdn.socket.io/socket.io-1.2.1.js"></script>
<script>
$(function(){
var socket = io.connect('/endpoint');
// on receive append data.sound and linebreak to result id on page
socket.on('receive', function(data){
$('#result').append(data.mytext);
});
$('form#emit').submit(function(event) {
socket.emit('submit', {account: $('#account').val(),
...
Run Code Online (Sandbox Code Playgroud)
这是socketIO要使用的flask端点
@app.route('/socket.io/<path:remaining>')
def iocg(remaining):
from websocketinstructions import WebSocketInstructions
socketio_manage(request.environ, {'/endpoint': WebSocketInstructions}, request)
return 'done'
127.0.0.1 - - [2014-11-24 15:29:05] "GET /socket.io/?EIO=3&transport=polling&t=1416864545405-114 HTTP/1.1" 404 342 0.002768
127.0.0.1 - - [2014-11-24 15:29:06] "GET /socket.io/?EIO=3&transport=polling&t=1416864546666-4 HTTP/1.1" 404 342 0.002745
127.0.0.1 - - [2014-11-24 15:29:10] "GET /socket.io/?EIO=3&transport=polling&t=1416864550413-115 …Run Code Online (Sandbox Code Playgroud) 我正在努力寻找有关 socket.io 超时值的任何文档。我在客户端使用 //cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.16/socket.io.min.js 在服务器端使用 Flask-SocketIO。
这是我创建套接字的方式:
namespace = '/coregrapher'
var socket = io.connect('http://' + document.domain + ':' + location.port + namespace);
socket.on('connect', function() {
socket.emit('my event', {data: 'I\'m connected!'});
});
socket.on('my response', function(msg) {
$('#result').append(msg.data);
});
Run Code Online (Sandbox Code Playgroud)
问题是,如果服务器甚至一分钟都没有向客户端或 Visaversa 发送任何内容,则客户端会断开连接,如果服务器尝试向客户端再次发送,则会失败,因为客户端已经断开连接。如何让客户端保持连接?
谢谢!
我正在尝试创建一个'keepalive'websocket线程,一旦有人连接到页面但每10秒发送一次,就会发出一个错误但是不确定如何绕过它.知道如何使这项工作.一旦'断开'被发送,我将如何杀死这个线程?
谢谢!
@socketio.on('connect', namespace='/endpoint')
def test_connect():
emit('my response', {'data': '<br>Client thinks i\'m connected'})
def background_thread():
"""Example of how to send server generated events to clients."""
count = 0
while True:
time.sleep(10)
count += 1
emit('my response', {'data': 'websocket is keeping alive'}, namespace='/endpoint')
global thread
if thread is None:
thread = Thread(target=background_thread)
thread.start()
Run Code Online (Sandbox Code Playgroud) 寻找有关如何在端口转发时在我的docker容器内运行celery pdb的建议,以便我可以从外部世界访问.
我正在关注http://celery.readthedocs.org/en/latest/tutorials/debugging.html上的指南
我面临的问题是,即使我告诉容器.
-e CELERY_RDB_HOST ='0.0.0.0'-cELERY_RDB_PORT ='6900'-p 6900:6900.
并且到达应用程序中的断点,实际打开的端口不是我要求的端口,因此我的端口转发不再有效....例如.相反,端口6902被打开,无论我要求端口是什么,它都会再次变化,而不是我要求的.
我知道它从100个端口列表中选择它认为"可用"但不确定如何解决这个问题.任何建议都会受到欢迎.
谢谢!
我有一个芹菜任务如下:
@celery.task(name='tasks.ht_run', default_retry_delay=30, max_retries=15, time_limit=1)
def ht_run(str_command):
try:
f = os.popen(str_command)
output = f.read()
if output == '':
raise Exception
except Exception as exc:
raise ht_run.retry(exc=exc)
return output.split('\n')
Run Code Online (Sandbox Code Playgroud)
它被调用如下:appserver.ht_run.delay(string)
虽然我希望它在超时时重试,但如果失败了.在Celery窗口中,我收到以下错误:
[2014-12-10 11:50:22,128: ERROR/MainProcess] Task tasks.ht_run[6a83793a-8bd6-47fc-bf74-0b673bf961f2] raised unexpected: TimeLimitExceeded(1,)
Traceback (most recent call last):
File "/Users/andy.terhune/cgenv/lib/python2.6/site-packages/billiard/pool.py", line 639, in on_hard_timeout
raise TimeLimitExceeded(job._timeout)
TimeLimitExceeded: TimeLimitExceeded(1,)
[2014-12-10 11:50:22,128: ERROR/MainProcess] Hard time limit (1s) exceeded for tasks.ht_run[6a83793a-8bd6-47fc-bf74-0b673bf961f2]
[2014-12-10 11:50:23,644: ERROR/MainProcess] Process 'Worker-28' pid:2081 exited with 'signal 9 (SIGKILL)'
Run Code Online (Sandbox Code Playgroud)
我怎样才能让它超时并重试呢?
我正在使用 networkx,但无法在任何地方找到边或节点的可用属性列表。我对已经分配的属性不感兴趣,但我对创建或编辑节点或边时可以设置/更改的内容不感兴趣。
有人可以指出我记录的地方吗?
谢谢!