【问题标题】:How to read a file line by line and making a new file for each line having same filename as last word of each line? [closed]如何逐行读取文件并为每一行创建一个与每行最后一个单词具有相同文件名的新文件? [关闭]
【发布时间】:2019-06-23 11:51:25
【问题描述】:

假设文件内容为:

May 30, Thu,    England vs SouthAfrica,     Match 1 ,Afternoon, London
May 31, Fri,    Windies vs Pakistan,    Match 2 ,Afternoon, Nottingham
Jun 01, Sat,    NewZealand vs SriLanka, Match 3 ,Afternoon, Cardiff

我想创建三个文件,每个文件的名称分别为 London、Nottingham 和 Cardiff。每个文件必须有自己的行。比如,诺丁汉的内容应该是:

May 31, Fri,    Windies vs Pakistan,    Match 2 ,Afternoon

我不想使用 awk。任何帮助表示赞赏。

【问题讨论】:

  • 您尝试了什么以及为什么不想使用 awk?
  • 欢迎来到 StackOverflow!在这里你可以①发布你的代码(作为minimal reproducible example),②描述你观察它的作用(使用哪个输入),③描述你期望观察的东西。这导致了一个可以回答的明确问题。请拨打tour 并阅读How-To-Ask 以了解更多信息。

标签: linux bash


【解决方案1】:
#!/bin/bash

cat datafile| \
while read line
do
    lastword=${line##*,}
    echo $lastword
    echo $line > $lastword
done

【讨论】:

  • 谢谢,你能解释一下如何*cat datafile| * 和 lastword=${line##*,} 在这里工作
  • cat 数据文件将数据文件的内容通过管道传输到读取的二进制文件中,一次一行。
  • "line##*," blob 告诉 bash 使用 "," 分隔符拆分行并输出最后一个匹配项。
猜你喜欢
  • 1970-01-01
  • 2020-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-10
  • 2018-08-24
  • 1970-01-01
  • 2021-10-18
相关资源
最近更新 更多