当前位置: 首页 > news >正文

Golang每日一练(leetDay0066) 有效电话号码、转置文件

目录

193. 有效电话号码 Valid Phone Numbers  🌟

194. 转置文件 Transpose File  🌟🌟

🌟 每日一练刷题专栏 🌟

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


193. 有效电话号码 Valid Phone Numbers

给定一个文本文件 file.txt,请只打印这个文件中的第十行。

示例:

假设 file.txt 有如下内容:

Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Line 9
Line 10

你的脚本应当显示第十行:

Line 10

说明:
1. 如果文件少于十行,你应当输出什么?
2. 至少有三种不同的解法,请尝试尽可能多的方法来解题。

代码:

package mainimport ("bufio""fmt""os"
)func main() {file, err := os.Open("file.txt")if err != nil {fmt.Println(err)return}defer file.Close()scanner := bufio.NewScanner(file)lineNum := 0for scanner.Scan() {lineNum++if lineNum == 10 {fmt.Println(scanner.Text())break}}if err := scanner.Err(); err != nil {fmt.Println(err)}
}

调用系统命令:

awk 'NR==10{print}' file.txt
或: sed -n '10p' file.txt 

调用代码:

package mainimport ("fmt""os/exec"
)func main() {cmd := exec.Command("awk", "NR==10{print}", "file.txt")//或 cmd := exec.Command("sed", "-n", "10p", "file.txt")output, err := cmd.Output()if err != nil {fmt.Println(err)}fmt.Print(string(output))
}

194. 转置文件 Transpose File

给定一个文件 file.txt,转置它的内容。

你可以假设每行列数相同,并且每个字段由 ' ' 分隔。

示例:

假设 file.txt 文件内容如下:

name age
alice 21
ryan 30

应当输出:

name alice ryan
age 21 30

代码:

package mainimport ("bufio""fmt""os""strings"
)func main() {// 打开文件file, err := os.Open("file.txt")if err != nil {fmt.Println(err)return}defer file.Close()// 逐行处理文件,并将处理结果存入二维切片中scanner := bufio.NewScanner(file)wordsSlice := make([][]string, 0)for scanner.Scan() {words := strings.Fields(scanner.Text())wordsSlice = append(wordsSlice, words)}// 构建列向量切片并打印for col := 0; col < len(wordsSlice[0]); col++ {colWords := make([]string, 0)for row := 0; row < len(wordsSlice); row++ {colWords = append(colWords, wordsSlice[row][col])}fmt.Println(strings.Join(colWords, " "))}
}

调用系统命令:

awk 'BEGIN{FS="\t"}{for(i=1;i<=NF;i++){arr[i]=arr[i]" "$i}}END{for(i=1;i<=NF;i++){print substr(arr[i], 2)}}' file.txt

调用代码:

package mainimport ("bufio""fmt""os/exec""strings"
)func main() {cmd1 := exec.Command("awk", "BEGIN{FS=\"\\t\"}{for(i=1;i<=NF;i++){arr[i]=arr[i]\" \"$i}}END{for(i=1;i<=NF;i++){print substr(arr[i], 2)}}" , "file.txt")output, err := cmd1.Output()if err != nil {fmt.Println(err)return}scanner := bufio.NewScanner(strings.NewReader(string(output)))for scanner.Scan() {fmt.Println(scanner.Text())}if err := scanner.Err(); err != nil {fmt.Println(err)}
}

🌟 每日一练刷题专栏 🌟

持续,努力奋斗做强刷题搬运工!

👍 点赞,你的认可是我坚持的动力! 

🌟 收藏,你的青睐是我努力的方向! 

评论,你的意见是我进步的财富!  

 主页:https://hannyang.blog.csdn.net/ 

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏

http://www.lryc.cn/news/67426.html

相关文章:

  • 前端 之 FormData对象浅谈
  • 【分布式锁】Redisson分布式锁的使用(推荐使用)
  • 创建XML的三种方式(二)
  • 十分钟教你搭建类似ChatGPT的安卓应用程序
  • 问题 E: 起止位置(C++)(二分查找)
  • 【sop】基于灵敏度分析的有源配电网智能软开关优化配置[升级1](Matlab代码实现)
  • LeetCode周赛复盘(第345场周赛)
  • Call for Papers丨第三届GLB@KDD‘23 Workshop
  • 【多线程】单例模式
  • 7搜索管理
  • 在Pytorch中使用Tensorboard
  • [笔记]深入解析Windows操作系统《四》管理机制
  • 【小沐学Python】Python实现在线英语翻译功能
  • k8s中pod使用详解
  • 案例说明:vue中Element UI下拉列表el-option中的key、value、label含义各是什么
  • idea创建javaweb项目步骤超详细(2022最新版本)
  • 「SAP ABAP」OPEN SQL(六)【DELETE语句 | MODIFY语句】
  • SpringCloud --- Feign远程调用
  • 基于单片机的数字频率计设计
  • 我看看哪个靓仔还没把Github Copilot用起来?
  • C++系列一: C++简介
  • 信通初试第一:无科研无竞赛一战上岸上海交大819学硕感悟
  • Spring —— Spring Boot 配置文件
  • Python 网络爬虫与数据采集(一)
  • 2023年6月DAMA-CDGP数据治理专家认证请尽快报名啦!
  • STM32+esp8266,让你的STM32开发板连接网络-----esp8266
  • 分布式缓存的基础知识
  • Vue3通透教程【七】生命周期函数
  • 《“裸奔”时代的网络防护:如何保护你的隐私和数据安全》
  • mapreduce优化方法