【问题标题】:How to print values of a column from the log output [closed]如何从日志输出中打印列的值[关闭]
【发布时间】:2018-05-02 21:09:41
【问题描述】:

我想获取列下的所有值。这是我的日志输出示例

姓名、公司、城市、国家

尼克,苹果,纽约,美国

DAS,Facebook,DAll,美国

约翰,推特,悉尼,澳大利亚

我想打印所有城市名称

城市

纽约

DALL

悉尼

姓名、公司、城市、国家行是标题。我需要 City 的输出

【问题讨论】:

  • cut -d' ' -f 2 ./outputfile.txt 工作了,现在我可以打印城市列了。

标签: python bash shell scripting sh


【解决方案1】:

您可以使用 cut 命令或 awk 命令来实现此目的

带剪辑

cat 1.txt | cut -d, -f3  
City
NY
DAll
Sydney

-d 告诉分隔符,-f 告诉你要提取哪个字段。

使用 awk

cat 1.txt | awk -F, '{print $3}'
City
NY
DAll
Sydney

-F 将分隔符指定为逗号。

【讨论】:

    【解决方案2】:

    假设每条记录中的值用逗号和空格分隔,您可以使用stringsplit 方法拆分行。只需指定您希望如何拆分字符串,您就可以参加比赛了。

    records = []
    with open('log.txt', 'r') as log_file:
        for line in log_file:
            name, company, city, country = line.split(', ')
            print(city)
            records.append((name, company, city, country))
    

    如果您的日志文件以更复杂的方式格式化,您可以考虑使用一些简单的模式匹配、正则表达式或适当的日志解析库。

    如果您需要打印出每个唯一的城市名称而不是遇到的每个城市名称,您可以将它们存储在一组中:

    cities = set()
    with open('log.txt', 'r') as log_file:
        for line in log_file:
            name, company, city, country = line.split(', ')
            print(city)
            cities.add(city)
    

    【讨论】:

    • 哦,是的,它们是用逗号和空格分隔的
    • 我更新了我的答案,以更好地反映您正在寻找的内容并提出另一种方法。
    • 得到这个错误 cities.sh:第 2 行:CITIES:找不到命令 city.sh:第 3 行:意外标记附近的语法错误 (' cities.sh: line 3: with open('log.txt', 'r') 作为 log_file:'
    • 对不起,我是从python脚本而不是shell脚本的角度回答的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    相关资源
    最近更新 更多