需要简单的脚本/循环/命令来输入命令、在文本文件中执行和输出

需要简单的脚本/循环/命令来输入命令、在文本文件中执行和输出

假设我在文本文件中有如下命令列表(cat cmdlist.txt):-

cut
lshw
top
awk
sensors

现在我想分别通过等获取有关该命令的简单信息whatis cut,并在文本文件中whatis lshw打印这些输出。whatis <commadnd>cmdinfo.txt

期望输出cmdinfo.txtcat 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的输出文件?whatiscmdlist.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

然而您可以从多种方式中选择一种。

相关内容