Unix - 在 Unix 中如何将 sed 命令的输出通过/通过管道传递给 ls 命令
Unix - How do you pass / pipe the output of a sed command to a ls command in Unix
我可以使用以下命令确定输入文件的大小:
ls -l employee.txt | awk '{print }'
这将只打印文件大小。
而且我能够忽略文件的第一行和最后一行(指的是 header 和结尾)来打印文件的内容。下面的命令对我有用:
sed '1d;$d' employee.txt
但是如何将这两个命令结合起来,从而确定忽略 header 和尾部的文件大小。同时,不应从输入文件中删除 header 和预告片。
我可以通过编写两个语句来实现这一点。一种是将整个文件复制到一个新文件中,除了 header 和预告片,然后对新文件执行 ls 操作,如下所示:
sed '1d;$d' employee.txt > employee1.txt
ls -l employee1.txt
我尝试在如下的单个语句中执行此操作,但无济于事。任何输入都会有所帮助。
sed '1d;$d' employee.txt | ls -l employee.txt
ls -l `sed '1d;$d' employee.txt`
sed '1d;$d' employee.txt |xargs ls -l
你可以通过
cat someFilename.txt | wc -c
第一个命令输出文件的内容,第二个命令计算输入的大小。
这不会删除 header 和预告片。为此,您可以像以前一样使用 'sed' 命令。
Don't parse ls
获取文件大小。要获取磁盘上文件的大小,请使用 stat -c '%s' filename
,或获取字符流的大小,请使用 wc -c
.
# size of employee.txt
stat -c '%s' employee.txt
# size without header and footer
sed '1d;$d' employee.txt | wc -c
我认为您的处理方式有误。
我的建议:使用"stat"命令查询总文件大小:
stat --format=%s employee.txt
您可以将结果存储在这样的变量中(假设您是 运行 a Bash shell):
fileSize="$(stat --format=%s employee.txt)"
现在您检索第一行(再次假设 Bash shell):
firstLine="$(head -n 1 employee.txt)"
接下来检索最后一行(再次假设 Bash shell):
lastLine="$(tail -n 1 employee.txt)"
现在计算第一行和最后一行的大小并将其从文件大小中减去:
echo "Total adjusted size is:" $((fileSize - ${#firstLine} - ${#lastLine}))
我可以使用以下命令确定输入文件的大小:
ls -l employee.txt | awk '{print }'
这将只打印文件大小。
而且我能够忽略文件的第一行和最后一行(指的是 header 和结尾)来打印文件的内容。下面的命令对我有用:
sed '1d;$d' employee.txt
但是如何将这两个命令结合起来,从而确定忽略 header 和尾部的文件大小。同时,不应从输入文件中删除 header 和预告片。
我可以通过编写两个语句来实现这一点。一种是将整个文件复制到一个新文件中,除了 header 和预告片,然后对新文件执行 ls 操作,如下所示:
sed '1d;$d' employee.txt > employee1.txt
ls -l employee1.txt
我尝试在如下的单个语句中执行此操作,但无济于事。任何输入都会有所帮助。
sed '1d;$d' employee.txt | ls -l employee.txt
ls -l `sed '1d;$d' employee.txt`
sed '1d;$d' employee.txt |xargs ls -l
你可以通过
cat someFilename.txt | wc -c
第一个命令输出文件的内容,第二个命令计算输入的大小。
这不会删除 header 和预告片。为此,您可以像以前一样使用 'sed' 命令。
Don't parse ls
获取文件大小。要获取磁盘上文件的大小,请使用 stat -c '%s' filename
,或获取字符流的大小,请使用 wc -c
.
# size of employee.txt
stat -c '%s' employee.txt
# size without header and footer
sed '1d;$d' employee.txt | wc -c
我认为您的处理方式有误。
我的建议:使用"stat"命令查询总文件大小:
stat --format=%s employee.txt
您可以将结果存储在这样的变量中(假设您是 运行 a Bash shell):
fileSize="$(stat --format=%s employee.txt)"
现在您检索第一行(再次假设 Bash shell):
firstLine="$(head -n 1 employee.txt)"
接下来检索最后一行(再次假设 Bash shell):
lastLine="$(tail -n 1 employee.txt)"
现在计算第一行和最后一行的大小并将其从文件大小中减去:
echo "Total adjusted size is:" $((fileSize - ${#firstLine} - ${#lastLine}))