00194 转置文件
题目描述
给定一个文件 file.txt
,转置它的内容。
你可以假设每行列数相同,并且每个字段由 ' ' 分隔.
示例:
假设 file.txt 文件内容如下:
name age
alice 21
ryan 30
应当输出:
name alice ryan
age 21 30
力扣地址
<!-- more -->
解题报告
采用 awk
命令行工具
- NR是指awk正在处理的记录位于文件中的位置(行号)
- NF是指awk正在处理的记录包含几个域(字段),这于域分隔符有关,默认为空
[root@localhost ~ ]$ awk '
{
for (i = 1; i <= NF; i++) {
if(NR == 1) {
s[i] = $i;
} else {
s[i] = s[i] " " $i;
}
}
}
END {
for (i = 1; s[i] != ""; i++) {
print s[i];
}
}' file.txt
name alice ryan
age 21 30
题解答案
本题解由微信公众号
小猿刷题
提供, 错误之处, 欢迎指正.
awk '{
for (i = 1; i <= NF; i++) {
if(NR == 1) {
s[i] = $i;
} else {
s[i] = s[i] " " $i;
}
}
}
END {
for (i = 1; s[i] != ""; i++) {
print s[i];
}
} ' file.txt
00195 第10行
题目描述
给定一个文本文件 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
说明:
-
- 如果文件少于十行,你应当输出什么?
-
- 至少有三种不同的解法,请尝试尽可能多的方法来解题。
力扣地址
<!-- more -->
解题报告
- 使用
sed -n "开始行,结束行p" 文件名
[root@localhost ~ ]$ sed -n '8,10p' file.txt
Line 8
Line 9
Line 10
[root@localhost ~ ]$ sed -n '8p;10p' file.txt
Line 8
Line 10
- 使用
awk 'NR == 指定行' 文件名
采用sed
本题解由微信公众号
小猿刷题
提供, 错误之处, 欢迎指正.
[root@localhost ~ ]$ sed -n 10p file.txt
Line 10
采用awk
本题解由微信公众号
小猿刷题
提供, 错误之处, 欢迎指正.
[root@localhost ~ ]$ awk 'NR == 10' file.txt
Line 10
来源:oschina
链接:https://my.oschina.net/u/269032/blog/3163073