beats powerbeats33里面有送三个月的apple music吗

问题:如何用shell读取文件中的第二行开始的每一列的数据?
描述:文件是这样的:a.txtname number
要循环读取到name和number的值,怎么做呢?解决方案1:sed '1d' a.txt|awk '{print $1}'解决方案2:跳过第一行:tail -n +2
如果你只要数字:cut -d' ' -f2解决方案3:我要挨个取出每行每列的数据,这样:cat a.txt | awk 'NR&1' | while read name number
echo $name
echo $number
以上介绍了“如何用shell读取文件中的第二行开始的每一列的数据?”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:/itwd/1071718.html
上一篇: 下一篇:shell awk读取文件中的指定行的指定字段 [大三TJB_708] - 博客频道 - CSDN.NET
《西决》 —— 克里斯·保罗
分类:-[小西南]-
1.awk功能和实用形式
awk指定读取文件中的某一行的某个字段
awk&&&&& 可以设置条件来输出文件中m行到n行中每行的指定的k字段,使用格式如下
awk&&& ‘NR==m,NR==n {print $k}’& path/filename
m,n,k表示实在的数值。如果要用变量来表示m,n的值,则变量需要用单引号将其引起来。
NR,{print }是awk命令在此用法下的规定字段;path/filename表示读取文件的路径及文件名。
当要读取某一行的内容的k字段时,使用格式如下
awk&&& ‘NR==m {print $k}’& path/filename
m,k与以上的含义一致,分别表示要读取的行数和当前行的第k字段。
2. 脚本使用awk命令举例
2.1 脚本代码
例:awk_each_line.sh
图1.awk_each_line.sh
【7-8】两行表示读取当前行($NUM)的第一、第二个字段内容赋值给变量S_TD,T_NUM。注意:引用行变量($NUM)时需要用单引号('')引起引用变量,只有这样bash才能识别。
2.2 文件内容和脚本运行结果
id_num.txt文件中的内容如下,与以上脚本在同一个目录之下:
图2.id_num.txt文件内容
脚本运行结果为:
图3.awk_each_line.sh运行结果
其中表示每行内容中的第一个字段,1-4表示每行内容的第二个字段。
这就表示成功读取了文件中的每一行内容的不同字段且将其赋给变量,而不是对文件中所有内容进行列表。
Note Over。
排名:第564名
(3)(425)Shell逐行读取文件的4种方法
投稿:junjie
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了Shell逐行读取文件的4种方法,本文介绍了while循环法、重定向法、管道法、文件描述符法等一些方法,需要的朋友可以参考下
在Linux中有很多方法逐行读取一个文件的方法,其中最常用的就是下面的脚本里的方法,而且是效率最高,使用最多的方法。为了给大家一个直观的感受,我们将通过生成一个大的文件的方式来检验各种方法的执行效率。
方法1:while循环中执行效率最高,最常用的方法。
function while_read_LINE_bottm(){
While read LINE
echo $LINE
done& & $FILENAME
注释:我习惯把这种方式叫做read釜底抽薪,因为这种方式在结束的时候需要执行文件,就好像是执行完的时候再把文件读进去一样。
方法2 : 重定向法;管道法: cat $FILENAME | while read LINE
Function While_read_LINE(){
cat $FILENAME | while read LINE
echo $LINE
注释:我只所有把这种方式叫做管道法,相比大家应该可以看出来了吧。当遇见管道的时候管道左边的命令的输出会作为管道右边命令的输入然后被输入出来。
方法3: 文件描述符法
Function while_read_line_fd(){
Exec 0&$FILENAME
While read LINE
Echo $LINE
Exec 0&&&3
注释: 这种方法分2步骤,第一,通过将所有内容重定向到文件描述符3来关闭文件描述符0.为此我们用了语法Exec 3&&0 。第二部将输入文件放送到文件描述符0,即标准输入。
方法4&&& for& 循环。
function& for_in_file(){
For& i& in& `cat $FILENAME`
注释:这种方式是通过for循环的方式来读取文件的内容相比大家很熟悉了,这里不多说。对各个方法进行测试,看那方法的执行效率最高。
首先我们用脚本(脚本见附件)生成一个70000行的文件,文件位置在/scripts/bigfile。然后通过下面的脚本来测试各个方法的执行效率,脚本很简单,不再解释。
#!/bin/bash
FILENAME="$1"
TIMEFILE="/tmp/loopfile.out" & $TIMEFILE
SCRIPT=$(basename $0)
function usage(){
echo -e "\nUSAGE: $SCRIPT file \n"
function while_read_bottm(){
while read LINE
echo $LINE
done & $FILENAME
function while_read_line(){
cat $FILENAME | while read LINE
echo $LINE
function while_read_line_fd(){
exec 0& $FILENAME
while read LINE
echo $LINE
function for_in_file(){
for i in& `cat $FILENAME`
if [ $# -lt 1 ] ; then
echo -e " \n starting file processing of each method\n"
echo -e "method 1:"
echo -e "function while_read_bottm"
time while_read_bottm && $TIMEFILE
echo -e "\n"
echo -e "method 2:"
echo -e "function while_read_line "
time while_read_line && $TIMEFILE
echo -e "\n"
echo -e "method 3:"
echo "function while_read_line_fd"
time while_read_line_fd &&$TIMEFILE
echo -e "\n"
echo -e "method 4:"
echo -e "function& for_in_file"
time& for_in_file && $TIMEFILE
执行脚本后: [root@localhost shell]# ./while /scripts/bigfile
脚本输出内容:
function while_read_bottm
real&&& 0m5.689s
user&&& 0m3.399s
sys&&& 0m1.588s
function while_read_line
real&&& 0m11.612s
user&&& 0m4.031s
sys&&& 0m4.956s
function while_read_line_fd
real&&& 0m5.853s
user&&& 0m3.536s
sys&&& 0m1.469s
function& for_in_file
real&&& 0m5.153s
user&&& 0m3.335s
sys&&& 0m1.593s
下面我们对各个方法按照速度进行排序。
real&&& 0m5.153s&&& method 4 (for 循环法)
real&&& 0m5.689s&&& method 1& (while 釜底抽薪法)
real&&& 0m5.853s&&& method 3&&& (标识符法)
real&&& 0m11.612s& method 2&&& (管道法)
由此可见在各个方法中,for语句效率最高,而在while循环中读写文件时,
while read LINE
echo $LINE
done & $FILENAME
方式执行效率最高。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 beats送的apple music 的文章

 

随机推荐