假设我在文本文件中有如下命令列表(cat cmdlist.txt
):-
cut
lshw
top
awk
sensors
现在我想分别通过等获取有关该命令的简单信息whatis cut
,并在文本文件中whatis lshw
打印这些输出。whatis <commadnd>
cmdinfo.txt
期望输出cmdinfo.txt
(cat cmdinfo.txt
):-
cut (1) - remove sections from each line of files
lshw (1) - list hardware
top (1) - display Linux processes
awk (1) - pattern scanning and text processing language
sensors (1) - print sensors information
我如何分别实现来自命令cmdinfo.txt
的输出文件?whatis
cmdlist.txt
这只是样本txt 文件。
如果需要的话,建议使用简单的脚本。
答案1
尽可能简单:
xargs whatis < cmdlist.txt > cmdinfo.txt
答案2
更简单的一个,
$ while read -r line; do whatis "$line"; done < cmdlist.txt > cmdinfo.txt
cut (1) - remove sections from each line of files
lshw (1) - list hardware
top (1) - display Linux processes
awk (1) - pattern scanning and text processing language
sensors (1) - print sensors information
使用以下命令将结果写入文件。
while read -r line; do whatis "$line"; done < cmdlist.txt > cmdinfo.txt
答案3
非常简单:
for i in $(cat cmdlist.txt); do whatis $i ; done > cmdinfo.txt
这将循环遍历i
输出中的每个条目 ( ) $(cat cmdlist.txt)
,并在每个条目上运行whatis
。示例输出:
cut (1) - remove sections from each line of files
lshw (1) - list hardware
top (1) - display Linux processes
awk (1) - pattern scanning and processing language
sensors (1) - print sensors information
注意:尽管在许多例子中你会发现i
用到了它,但你不必使用它 - 你可以使用大多数普通的字母数字字符串 - 例如:
for jnka127nsdn in $(cat input.txt); do whatis $jnka127nsdn ; done
无需解析即可完成cat
:
while read -r i ; do whatis $i ; done < cmdlist.txt
答案4
我认为您可以使用以下命令获得正确的结果。
$ for i in `cat cmdlist.txt`;do whatis $i 2>&1;done | sed "s,: nothing appropriate.,,g" > cmdinfo.txt
实际上,
$ for i in `cat cmdlist.txt`;do whatis $i 2>&1;done
该命令,第一个命令的一部分将显示如下输出。
cut (1) - remove sections from each line of files
lshw (1) - list hardware
top (1) - display Linux tasks
.: nothing appropriate.
.: nothing appropriate.
.: nothing appropriate.
tr (1) - translate or delete characters
您可以使用 来完成此操作whatis $(cat cmdlist.txt)
,但它的输出包括以下几行。
.: nothing appropriate.
.: nothing appropriate.
.: nothing appropriate.
上述sed
命令删除了一些不需要的输出行。
问题cmdlist.txt
已更改为现在。如果可以从中列出所有的行whatis
,则可以使用以下命令作为简单的方法。
whatis `cat 1.txt` 2>/dev/null > cmdinfo.txt
如果你只需要可以从中完整列出的行whatis
,可以使用以下命令作为简单的方法。
whatis `cat 1.txt` > cmdinfo.txt
然而您可以从多种方式中选择一种。