假设我有以下管道:
cmd1 < input.txt |\
cmd2 |\
cmd4 |\
cmd5 |\
cmd6 |\
(...) |\
cmdN > result.txt
Run Code Online (Sandbox Code Playgroud)
在某些条件下,我想cmd3在cmd2和之间添加一个cmd4。有没有办法创建一种条件管道而不将结果保存cmd2到临时文件中?我会想到这样的事情:
cmd1 < input.txt |\
cmd2 |\
(${DEFINED}? cmd3 : cat ) |\
cmd4 |\
cmd5 |\
cmd6 |\
(...) |\
cmdN > result.txt
Run Code Online (Sandbox Code Playgroud) 我只想快速浏览一下我分离的 GNUscreen会话。是否可以将当前内容转储到 stdout ?就像是
screen --print SESSION_NAME > file.txt
Run Code Online (Sandbox Code Playgroud) 我知道unix的键/值库(berkeleydb、gdbm、redis ... )。但是在我开始编码之前,我想知道是否有一个适用于 unix 的标准工具可以让我执行以下操作:
$ tool -f datastore.db put "KEY" "VALUE"
$ tool -f datastore.db put -f file_key_values.txt
$ tool -f datastore.db get "KEY"
$ tool -f datastore.db get -f file_keys.txt
$ tool -f datastore.db remove "KEY"
$ etc...
Run Code Online (Sandbox Code Playgroud)
谢谢
我有两个文件 _jeter3.txt 和 _jeter1.txt
我检查过它们都使用第 20 列排序 sort -c
sort -t ' ' -c -k20,20 _jeter3.txt
sort -t ' ' -c -k20,20 _jeter1.txt
#no errors
Run Code Online (Sandbox Code Playgroud)
但是当我想要join两个文件时出现错误,它说第二个文件没有排序:
join -t ' ' -1 20 -2 20 _jeter1.txt _jeter3.txt > /dev/null
join: File 2 is not in sorted order
Run Code Online (Sandbox Code Playgroud)
我不明白为什么。
cat /etc/*-release #FYI
openSUSE 11.0 (i586)
VERSION = 11.0
Run Code Online (Sandbox Code Playgroud)
更新:使用 ' sort -f' 和join -i(均不区分大小写)修复了问题。但这并不能解释我最初的问题。
更新:排序和连接的版本:
> join --version
join (GNU coreutils) 6.11
Copyright (C) 2008 …Run Code Online (Sandbox Code Playgroud) 我正在尝试按照此处所述实现自定义bash 完成。然而,似乎是区分大小写的。有没有办法让它在那种情况下不区分大小写?compgen
我可以使用file和magic( http://linux.die.net/man/5/magic ) 来覆盖其他一些已知格式的描述吗?
例如,我想描述以下格式:
那是“只是”文本文件
或者
那只是一个以幻数开头的压缩文件 BAM\1
?
你知道任何例子吗?
是否可以提供自定义 C 代码来测试文件而不是使用魔术格式?
我的问题如下:file(1) 和 magic(5) :描述其他格式。
我想描述一个 FASTA 序列(http://en.wikipedia.org/wiki/FASTA_format)
它可能是一个DNA 序列(只有 ATGC)
>header
ATGCTAGCATAGCATCGATGCTGTAGCTACGTAGCTACGTCTACG
Run Code Online (Sandbox Code Playgroud)
一个“神奇”的模式将是
>.*\n[ATGC]*
Run Code Online (Sandbox Code Playgroud)
或蛋白质序列(也包含 ATGC 的 ACDEFGHIKLMNPQRSTVWYBZX)
>header
AHITKLMNPQRGHIKLMNPQRC
Run Code Online (Sandbox Code Playgroud)
一个“神奇”的模式将是
>.*\n[ACDEFGHIKLMNPQRSTVWYBZX]*
Run Code Online (Sandbox Code Playgroud)
但是每当我使用这些正则表达式时,文件都会告诉我它是一种蛋白质,因为它与第二个正则表达式匹配。有没有办法对结果进行优先排序?有没有办法优先考虑,比如“如果匹配,不要尝试任何其他模式?”。
我想从以下位置复制一个目录:
path1/dir1
Run Code Online (Sandbox Code Playgroud)
到
path2/dir2
Run Code Online (Sandbox Code Playgroud)
我第一次调用
cp -r path1/dir1 path2/dir2
Run Code Online (Sandbox Code Playgroud)
没问题,dir2是在path2下创建的
ls path2/dir2
Run Code Online (Sandbox Code Playgroud)
bu 第二次,在 path2/dir2 下创建 dir1
ls path2/dir2/dir1
Run Code Online (Sandbox Code Playgroud)
我可以只使用 获得正确的行为cp吗?(= 不调用rm -f path2/dir2)
file-command ×2
autocomplete ×1
bash ×1
cp ×1
database ×1
file-format ×1
gnu-screen ×1
join ×1
logs ×1
pipe ×1
shell ×1
shell-script ×1
sort ×1
stdout ×1