目录
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 main
import (
"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 := 0
for 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 main
import (
"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 main
import (
"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 main
import (
"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每日一练 专栏 |