我正在尝试通过 script.sh 从第 2 行到第 5 行打印文件(myfile)的内容。该脚本无法从位置 2 打开文件。而且内容从第一行打印到第四行。以下是文件内容、命令和命令的输出。
$cat myfile
SR.N0. Details
Name XXXX
DOB XXXX
DOJ xxxx
JOB XXXX
DOMAIN XXXX
COMPANY XXXX
$cat script.sh
#!/bin/bash
tail +$1 $3 | head -n$2
$./script.sh 2 6 myfile
tail: cannot open ‘+2’ for reading: No such file or directory
==> myfile <==
SR.N0. Details
Name XXXX
DOB XXXX
DOJ xxxx
JOB XXXX
最佳答案
tail
接受行数作为 -n ...
或 --lines=...
标志的一部分。从 manpage :
将 tail +$1 $3
替换为 tail -n +$1 $3
或 tail --lines=+$1 $3
。
有趣的是,您已经在使用正确的 head
标志。
Server Fault 上也有一个非常相似的问题: https://serverfault.com/questions/133692/how-to-display-certain-lines-from-a-text-file-in-linux 。普遍的共识是您的方法很好,但另一种方法可能是使用 script.sh
编写 sed
就像
#!/bin/bash
sed -n "${1},${2}p" ${3}
关于linux - 尾部 : cannot open ‘+2’ for reading: No such file or directory,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44054761/