请考虑以下代码段:
echo '7 a
3 c
3 b
2 first
2 second
2 third
2 fourth
2 fifth
9 d
2 sixth
' | sort -n -k 1
Run Code Online (Sandbox Code Playgroud)
它给出了一个输出:
2 fifth
2 first
2 fourth
2 second
2 sixth
2 third
3 b
3 c
7 a
9 d
Run Code Online (Sandbox Code Playgroud)
虽然列表是由第一个字符以数字方式正确排序的,但对于那些连续且相等的值,原始顺序也已被洗牌.我想获得:
2 first
2 second
2 third
2 fourth
2 fifth
2 sixth
3 c
3 b
7 a
9 d
Run Code Online (Sandbox Code Playgroud)
这有可能sort吗?如果没有,使用shell工具实现这种排序的最简单方法是什么?
我正在尝试将“ join”命令安装到我的yocto映像中。我已经安装了busybox,但是它没有join功能,但是有一部分coreutils。Coreutils确实具有join的功能,因此我需要从coreutils配方中进行安装。
如果我仅使用IMAGE_INSTALL + =的标准配方来安装busybox和coreutils,则某些程序将符号链接到busybox,而另一些则链接到coreutils,这对我来说是个问题。我如何告诉coreutils软件包仅在映像上安装“ join”并忽略所有其他coreutils数据?
为什么不能使用以下bash代码?
for i in $( echo "emmbbmmaaddsb" | split -t "mm" )
do
echo "$i"
done
Run Code Online (Sandbox Code Playgroud)
预期产量:
e
bb
aaddsb
Run Code Online (Sandbox Code Playgroud) 我有一个大的(1.8GB)文件,我想分成最大100MB的文件.为此,我使用GNU拆分功能,选项-d.结果数字后缀很奇怪.直到89,一切都很好,但随后它从9000开始,然后是9001,......等等.有没有人知道为什么我会得到这种奇怪的行为?
我有kotlin脚本(但它可以是带参数的任何Linux命令),例如:
#!/usr/bin/env kotlinc -script
println("hello world")
Run Code Online (Sandbox Code Playgroud)
当我在Ubuntu中运行它时,我得到:
/usr/bin/env: ‘kotlinc -script’: No such file or directory
Run Code Online (Sandbox Code Playgroud)
但是当我在命令行中运行时:
/usr/bin/env kotlinc -script
Run Code Online (Sandbox Code Playgroud)
有用.找到路径是没有问题的,因为脚本:
#!/usr/bin/env kotlinc
println("hello world")
Run Code Online (Sandbox Code Playgroud)
作品
出于某种原因,Ubuntu "#!/usr/bin/env kotlinc -script"将其"kotlinc -script"视为单一参数.但只在shell脚本标题中.
我需要明确的运行我的剧本"#!/usr/bin/env kotlinc -script",因为我希望它在哪里其他发行结束的环境中正常运行"kotlin"中$PATH.
在Ubuntu coreutils中是否有错误或某事?有办法解决吗?
我正在使用unix who命令处理一个想法.众所周知,似乎没有直接开关只提供用户名和行(终端)信息而没有日期和屏幕信息...例如:输出是mneedham tty7...2012-02-19 11:26 (:0)
我想要得到的只是那mneedham tty7部分.无论用户名和终端信息有多长,解决方案都需要工作.
我尝试使用tr -s ' '(一个空间)who | tr -s ' ',这给了我一切之间的空间.不是我想要的.Tried cut -d" " -f1只获取用户名.所以我希望有人可以帮我找到正确的命令来获取两点信息.
谢谢.
我在这里下载了bash shell 4.2版表单:http://ftp.gnu.org/gnu/bash/,然后使用以下命令自行编译:
./configure
make
Run Code Online (Sandbox Code Playgroud)
但是我编译的bash比一个系统提供的要大得多:
这是我的bash:
$ ls -lh bash
-rwxrwxr-x 1 unimous unimous 3.8M Oct 31 23:57 bash
Run Code Online (Sandbox Code Playgroud)
这是系统的bash:
$ ls -hl /bin/bash
-rwxr-xr-x 1 root root 937K Sep 19 21:40 /bin/bash
Run Code Online (Sandbox Code Playgroud) 我有一个数据导入脚本,它读取行并将它们添加到数据库,到目前为止一直很好.不幸的是,脚本(或其运行时或数据库库或其他)中的某些东西是内存泄漏,因此大型导入使用单调增加的主内存,导致交换缓慢,然后内存耗尽的进程死亡.将导入分为多次运行是一种解决方法; 我一直这样做,split然后在每个部分上执行导入脚本的循环执行.
但我宁愿跳过分割文件,这感觉它应该是一个单行.事实上,似乎应该存在一个等价于xargs将行传递给stdin上的指定命令,而不是作为参数.如果这个假设命令是xlines,那么我希望以下内容为myimportgiantfile.txt中每批最多50,000行运行脚本:
cat giantfile.txt | xlines -L 50000 myimport
Run Code Online (Sandbox Code Playgroud)
我是否xlines在某个其他名称下缺少类似的功能,或隐藏在其他命令的选项中?或者可以xlines用几行BASH脚本完成?
根据文档,命令ln -f删除现有的目标文件。这是否意味着如果我创建符号链接,-f 应该删除或覆盖目标处的任何现有符号链接?
我有一个符号链接,例如 L,指向 DIR1 并输入ln -sf DIR2 L。但L仍然指向DIR1。仅rm L此命令创建指向 DIR2 的链接后。
通过文件的符号链接,它的行为符合预期。
目录链接有什么问题?(Ubuntu 16.04.2 LTS 和 Windows WSL 上的 bash 4.3.48)
有一个gnu coreutils程序'tee'和一个linux(/ libc?)系统调用'tee'.程序T恤不会打电话给发球台.相反,它'读'然后'fwrite'(当然是多次).
为什么不开球呢?我认为这是为了性能或可移植性,但我找不到答案.
后续问题,为什么它'读'和'fwrite',而不是'read'/'write'或'fread'/'fwrite'?