ido*_*pme 3 linux bash shell wc
我wc -l在我的文本文件中使用命令计数行数(我也想通过管道对所有内容进行排序),如下所示:
wc -l $directory-path/*.txt | sort -rn
Run Code Online (Sandbox Code Playgroud)
输出包括“total”行,它是所有文件的行的总和:
10 total
5 ./directory/1.txt
3 ./directory/2.txt
2 ./directory/3.txt
Run Code Online (Sandbox Code Playgroud)
有没有办法抑制这个汇总行?或者更好的是,改变摘要行的措辞方式?例如,用“行”代替“10”,用“文件”代替“总计”。
sed解决办法!由于总数出现在最后一行,$d是用于删除最后一行的sed命令。
wc -l $directory-path/*.txt | sed '$d'
Run Code Online (Sandbox Code Playgroud)
wc -l $directory-path/*.txt | sed '$d;1ilines total'
Run Code Online (Sandbox Code Playgroud)
不幸的是,没有对齐。
wc -l $directory-path/*.txt |
sed -e '
s/^ *\([0-9]\+\)/ \1/;
s/^ *\([0-9 ]\{11\}\) /\1 /;
/^ *[0-9]\+ total$/d;
1i\ lines filename'
Run Code Online (Sandbox Code Playgroud)
会做这份工作
lines file
5 ./directory/1.txt
3 ./directory/2.txt
2 ./directory/3.txt
Run Code Online (Sandbox Code Playgroud)
wc版本真的可以把总数放在第一行:这个是为了好玩,因为我不相信有一个wc版本将总数放在第一行,但是......
此版本在所有地方删除总行并在输出顶部添加标题行。
wc -l $directory-path/*.txt |
sed -e '
s/^ *\([0-9]\+\)/ \1/;
s/^ *\([0-9 ]\{11\}\) /\1 /;
1{
/^ *[0-9]\+ total$/ba;
bb;
:a;
s/^.*$/ lines file/
};
bc;
:b;
1i\ lines file' -e '
:c;
/^ *[0-9]\+ total$/d
'
Run Code Online (Sandbox Code Playgroud)
这更复杂,因为我们不会删除第一行,即使它是总行。
| 归档时间: |
|
| 查看次数: |
4008 次 |
| 最近记录: |