Has*_*ima 6 command-line bash scripts text-processing
如何一次仅打印或显示文本文件中的单词。当我运行我的脚本时,它应该只一个一个地显示文本文件中的每个单词,但只显示那个单词。
这是我所做的,但它将每个单词显示在单独的行上,但它显示了所有单词:
FS=$'\n'
for j in `cat read`
do
echo "$j"
done
Run Code Online (Sandbox Code Playgroud)
我希望输出看起来像这样:
root@matrix:~> first word ---> this word disappear when second is displayed
root@matrix:~> second word ---> this disappear when third is displayed
root@matrix:~> third word ---> this disappear when fourth is displayed and continues like this to the end of the file!
Run Code Online (Sandbox Code Playgroud)
您可以在脚本中使用sleep和clear命令如下:
for word in $(< read)
do
echo "$word"
sleep 1
clear
done
Run Code Online (Sandbox Code Playgroud)
所述sleep用于在指定的时间量指令化妆延迟(以秒计)。随着sleep 1延迟为1秒。您可以通过增加第二个参数来改变更多的时间延迟,或者延迟小于 1 秒将其划分为低单位;比如sleep .11/10 秒延迟或sleep .0011/1000 秒延迟等。
该clear命令清除终端屏幕。
awk命令执行此操作:awk '{i=1; while(i<=NF){ print $((i++)); system("sleep 1; clear") }}' read
Run Code Online (Sandbox Code Playgroud)
在 中awk,NF指定当前输入记录/行中的字段总数,因此通过使用变量作为计数器 ( i) 并循环遍历它,我们将从第一个位置到它们的末尾 ( NF)打印所有字段。然后通过使用该system("sleep 1; clear")部分,我们告诉awk调用系统命令休眠 1 秒并清除屏幕。
在上面,我们将输入文件逐字显示。如果要逐行显示它IFS=$'\n',请在脚本中添加,例如:
IFS=$'\n'
for word in $(< read)
do
echo "$word"
sleep 1
clear
done
Run Code Online (Sandbox Code Playgroud)
并更改awk命令,如:
awk '{ $0; system("sleep 1; clear") }1' read
Run Code Online (Sandbox Code Playgroud)
$0指定当前行。与1上年底启用默认awk的打印命令。