在我的git存储库中,我将文件(rm)移动到另一个文件夹后手动删除.我并没有把所有的改变都交给我的回购,但现在我做了git status .
ronnie@ronnie:/home/github/Vimfiles/Vim$ git status .
# On branch master
# Changes not staged for commit:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: plugin/dwm.vim
#
no changes added to commit (use "git add" and/or "git commit -a")
Run Code Online (Sandbox Code Playgroud)
现在,我应该如何提交,以便dwm.vim从我的远程仓库中的插件文件夹中删除.我知道我必须使用,git add && git commit但我没有文件提交/添加,因为/plugin/dwm.vim已经删除.
我有一个bash脚本(chbr.sh)来改变终端的显示亮度,因为我的亮度键不起作用.
`sudo setpci -s 00:02.0 F4.B=30`
Run Code Online (Sandbox Code Playgroud)
现在,每次我运行该脚本时都要求输入我不喜欢的密码.所以,我google了一下,发现可以编辑/etc/sudoers文件来禁用密码功能.
所以,我sudoers用以下内容编辑了我的文件
ronnie ALL = (ALL) NOPASSWD: /home/ronnie/chbr.sh
Run Code Online (Sandbox Code Playgroud)
现在当我运行我的脚本,因为./chbr.sh它再次要求我的密码.那么,这不是让sudo访问bash脚本的正确方法,或者我在这里做错了什么.
ronnie@ronnie:~$ ls -l chbr.sh
~rwxrwxr-x 1 ronnie ronnie 46 Jul 13 15:59 /home/ronnie/chbr.sh
Run Code Online (Sandbox Code Playgroud) 我知道我的标题不是很明显,但让我试着在这里解释一下.
我有一个文件名test.txt,有一些重复的行.现在,我想要做的是删除那些重复的行,同时删除update test.txt新的内容.
的test.txt
AAAA
BBBB
AAAA
CCCC
Run Code Online (Sandbox Code Playgroud)
我知道我可以sort -u test.txt用来删除重复项但是用新内容更新文件如何将它的输出重定向到同一个文件.以下命令不起作用.
sort -u test.txt > test.txt
Run Code Online (Sandbox Code Playgroud)
那么,为什么上面的命令不起作用并且方法是否正确?
还有其他任何方式
sort_and_update_file test.txt
Run Code Online (Sandbox Code Playgroud)
它可以对文件进行排序和自动更新,而无需重定向.
在今天之前,我正在使用/etc/vim/vimrc配置我的vim设置.今天我想到了创建.vimrc文件.所以,我用过
touch .vimrc
cat /etc/vim/vimrc > .vimrc
Run Code Online (Sandbox Code Playgroud)
所以,现在当我用vim打开任何文件时,我得到以下错误:
Error detected while processing /home/ronnie/.vimrc:
line 68:
E122: Function SplitColors already exists, add ! to replace it
line 77:
E122: Function ChangeColors already exists, add ! to replace it
line 171:
E174: Command already exists: add ! to replace it
line 174:
E174: Command already exists: add ! to replace it
Press ENTER or type command to continue
Run Code Online (Sandbox Code Playgroud)
我都/etc/vim/vimrc和.vimrc位于我的系统文件.所以,这是我收到此错误的原因,因为从现在开始我只想.vimrc用来配置我的vim设置.
我试图使用正则表达式提取字符串的一部分.我有以下字符串的情况:
case1: Warehouse.13.season01episode01.hdtv.xor.avi
case2: Warehouse.13.s01e01.hdtv.xor.avi
case3: Warehouse.13.01x01.hdtv.xor.avi
Run Code Online (Sandbox Code Playgroud)
的delimter(.)在上述字符串可以被替换\s - _.
我使用的逻辑是检查是否s or season按数字预先(lookbehind)并提取它之前的所有内容但是因为后视需要绝对长度我反转了字符串并使用了它.
现在对于case1我创建了下面的正则表达式,它工作正常和输出Warehouse.13.
.*?\d{1,2}e\d{1,2}s\.(?=\d+)(.*)
Run Code Online (Sandbox Code Playgroud)
现在我使用case2:
.*?\d{1,2}edosipe\d{1,2}nosaes\.(?=\d+)(.*) # works fine.
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试将上述两种情况+可选的分隔符组合起来时:
.*?\d{1,2}[e|edosipe]?[._ x\-]?\d{1,2}[s|nosaes]?[._\- ]?(?=\d+)(.*)
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,您可以观察到大多数事情都是选择性的(?).它适用于案例3.
使用上面的正则表达式与case2的任何内容都不匹配,但对case1和case3工作正常.
知道这里有什么问题.
PS:我知道可能有其他可能的字符串会违反上述正则表达式但目前对它们不感兴趣.
我有一份清单l = [['a','b', 'c'], 'd','e', ['f', 'g']].列表元素并不总是必须是字母表.
现在,我使用了以下代码:
>>> index =1
>>> for i in l:
... if isinstance(i, list):
... for j in i :
... print index, j
... index = index + 1
... else:
... print index, i
... index = index + 1
...
1 a
2 b
3 c
4 d
5 e
6 f
7 g
Run Code Online (Sandbox Code Playgroud)
您可以看到我打印出结果的格式.
另一个例子:
l = [['aaa','bbb','xxx'], 'ddd']
Output =
1 aaa
2 bbb
3 xxx
4 …Run Code Online (Sandbox Code Playgroud) 我正在创建一个 Perl 脚本,它将以 .mp3 格式将 mp3 文件移动到我的音乐文件夹中artist/album/mp3file。现在我的一些 mp3 文件可能没有,album tag所以我想查询MusicBrainz数据库来检索给定的专辑元数据track title & artist。
我正在为此任务使用WebService::MusicBrainz Perl 模块,但我看不到任何提供专辑元数据信息的方法。我目前的代码是:
use WebService::MusicBrainz::Track;
my $ws = WebService::MusicBrainz::Track->new();
my $response = $ws->search({ ARTIST => 'Ryan Adams', TITLE => 'when the stars go blue' });
my $track = $response->track();
print $track->title(), " - ", $track->artist()->name(), "\n";
say $track->id();
Run Code Online (Sandbox Code Playgroud)
那么,如何使用 MusicBrainz 获取给定曲目的专辑信息,如果不可能,我的替代选择是什么?
我使用以下代码解决了Project Euler#14:
import time
start_time = time.time()
def collatz_problem(n):
count = 0
while n!=1:
if n%2==0:
n = n/2
count = count+1
elif n%2!=0:
n = 3*n+1
count = count +1
return count+1
def longest_chain():
max_len,num = 1,1
for i in xrange(13,1000000):
chain_length = collatz_problem(i)
if chain_length > max_len:
max_len = chain_length
num = i
return num
print longest_chain()
print time.time() - start_time, "seconds"
Run Code Online (Sandbox Code Playgroud)
以上解决方案开始~35 seconds运行.现在,我试图从另一个解决方案在这里.
解:
import time
start_time = time.time()
cache = …Run Code Online (Sandbox Code Playgroud) 我试图在acpi命令的输出上执行正则表达式替换.我的perl one衬里是这样的:
acpi | perl -F/,/ -alne 'print $F[1] if ($F[1]=~s!\s|%!!)'
Run Code Online (Sandbox Code Playgroud)
上面一个衬里的87%输出是我的所需输出只是87因此它没有替换%字符串.
现在acpi命令的输出是
Battery 0: Discharging, 87%, 05:54:56 remaining
Run Code Online (Sandbox Code Playgroud)
而输出print $F[1]是
ronnie@ronnie:~$ acpi | perl -F/,/ -alne 'print $F[1]'
87% #space followed by 87%#
ronnie@ronnie:~$
Run Code Online (Sandbox Code Playgroud)
现在奇怪的是,如果我尝试使用相同的perl单线程:
echo " 86%" | perl -nle 'print if s!\s|%!!g'
Run Code Online (Sandbox Code Playgroud)
它工作正常和输出86.
那么,为什么它不使用acpi命令.
PS:我知道这可以通过使用sed/awk来实现,但我感兴趣的是为什么我的解决方案无效.
我试图从中提取一些文本和链接instapaper.com.所以我使用以下代码完成工作:
>>> import lxml.html as lh
>>> doc = lh.parse("http://www.instapaper.com/u/folder/1227370/programming")
>>> text = doc.xpath(".//*[@id='bookmark_list']/*/div[3]/a/text()")
>>> len(text)
0
>>> text
[]
Run Code Online (Sandbox Code Playgroud)
如您所见,它返回一个空列表,这意味着它无法找到与上述xpath匹配的任何文本.
现在,当我xpath expr在firebug/firepath中使用上述内容时,它可以正常工作.

您可以在上面的图像中看到它显示40 matching nodes.
所以,我的问题是为什么上面的xpath表达式不能用于python/lxml.
正如所请求的Instapaper页面源
perl ×3
python ×3
bash ×2
regex ×2
duplicates ×1
file ×1
git ×1
github ×1
in-place ×1
list ×1
lxml ×1
musicbrainz ×1
performance ×1
python-2.7 ×1
sorting ×1
sudo ×1
sudoers ×1
vim ×1
xpath ×1