linux shell 如何把txt文本中每一行提取出来赋值给一变量,再输出这一变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux shell 如何把txt文本中每一行提取出来赋值给一变量,再输出这一变量相关的知识,希望对你有一定的参考价值。

例如:123.txt内容192.168.1.2/a1.exe192.168.1.2/a2.exe192.168.1.3/a3.exe使用cat或者别的编写脚本,怎么读取其每一行复制给一变量,再输出。

: No such file or directorybash
你的shell脚本有可能是在windows下编写的,然后在转移到linux执行的。
#vi filename
然后用命令
:set ff ---------查看时dos还是unix
若是dos字样, 那么你可以用set ff=unix把它强制为unix格式的, 然后存盘退出. 再运行一遍看。

建立脚本最好在linux下,使用touch filename.sh来创建,再用vi filename.sh来编写脚本命令。
例如:
#touch dd.sh
#vi dd.sh
然后输入下面的内容。
#!bin/bash
#文本txt每一行复制并输出----注释
cat 123.txt|while read var;do
echo $var
done
exit 0

保存后,使用
#bash dd.sh
或者
#chmod 777 ss.sh
#./dd.sh
就可以运行啦。
参考技术A 使用cat的话可以这样:
cat 123.txt | while read line
do
echo "$line"
done

123.txt的每行读取到变量line中并输出。
参考技术B 使用如下格式:
#!/bin/sh
# 这边写文件名(全路径)
FILE_NAME=""

while read LINE
do
echo $LINE
done < $FILE_NAME
参考技术C #!/bin/bash

while IFS= read line
do
echo $line
done < ./file.txt
参考技术D 字串符比较常见。但是这个没有限定,因为你可以进行类型转换

如何在python中每隔几秒在tkinter窗口中更改一行文本[重复]

【中文标题】如何在python中每隔几秒在tkinter窗口中更改一行文本[重复]【英文标题】:How to change a line of text in a tkinter window every few seconds in python [duplicate] 【发布时间】:2019-12-29 17:43:48 【问题描述】:

我试图在 tkinter 窗口中每隔几秒显示一个字典中的随机短语。

我可以通过在 tkinter 的文本框中运行一个变量来显示该短语,但我似乎无法让该短语在所需的时间间隔内更改。

到目前为止,这是我拥有的代码。

import time
import sys
import random
import tkinter as tk
from tkinter import *



""" DICTIONARY PHRASES """
phrases = ["Phrase1", "Phrase2", "Phrase3"]

def phraserefresh():
    while True:
        phrase_print = random.choice(phrases)
        time.sleep(1)
    return phrase_print

phrase = phraserefresh()

# Root is the name of the Tkinter Window. This is important to remember.
root=tk.Tk()

# Sets background color to black
root.configure(bg="black")

# Removes the window bar at the top creating a truely fullscreen
root.wm_attributes('-fullscreen','true')
tk.Button(root, text="Quit", bg="black", fg="black", command=lambda root=root:quit(root)).pack()

e = Label(root, text=phrase, fg="white", bg="black", font=("helvetica", 28))
e.pack()


root.mainloop()

运行此代码的结果是 tkinter 窗口永远不会打开,而不是更改显示的文本。我知道我一定是在看一些简单的东西,但我似乎无法弄清楚是什么。提前感谢您的帮助!

【问题讨论】:

【参考方案1】:

由于while True 循环,此函数永远不会返回:

def phraserefresh():
    while True:
        phrase_print = random.choice(phrases)
        time.sleep(1)
    return phrase_print # This line is never reached

您可以使用after() 方法设置重复延迟并更改标签文本。

def phrase_refresh():
    new_phrase = random.choice(phrases)
    e.configure(text=new_phrase) # e is your label
    root.after(1000, phrase_refresh) # Delay measured in milliseconds

【讨论】:

感谢您的帮助!虽然当运行该代码时,我要么根本没有得到这个短语,只是数字和函数名,要么是一个错误说 e 没有定义。我做错了什么? @Megastrik3 尝试将函数声明放在声明 e 的行之后(就在 mainloop() 之前) 其实没关系。我得到了它!您发布的代码不起作用的原因是我的 e = Label... 和 e.pack() 行的顺序错误。我通过在这两行之间添加phrase_refresh() 来修复它。所以它现在可以工作了!非常感谢您的时间和帮助! @Megastrik3 再想一想,我只是在标签(“标签”)这个词中有一个拼写错误,我的大脑就是不让我看到。 掌心。所以现在它正在工作。非常感谢您的提问! 是的,会做到的@Kristen_G!很高兴你能弄清楚! ?

以上是关于linux shell 如何把txt文本中每一行提取出来赋值给一变量,再输出这一变量的主要内容,如果未能解决你的问题,请参考以下文章

请问linux把shell的信息全部输出到文本文件的命令是啥?

linux shell命令怎么查找文件中指定字符串,并把这个字符串所在行和下面一行的内容写到另外一个文件中?

linux命令模式下怎么把一个文本中的一行复制到另一个文本中?

shell下的history如何清除

如何把txt文本内容全部合并为一行

更新完毕Linux命令行与Shell脚本编程大全(第3版)读书笔记21-26章