在shell编程中,怎样对每一行每一列的数据进行操作?

比如我有一个200行6列的文本文件,需要对每行每列的数据进行操作,之后再写入到另一个文件中。问题是怎样取出数据呢(先对第一行的每一个数据进行操作,完成之后将结果保存到另一... 比如我有一个200行6列的文本文件,需要对每行每列的数据进行操作,之后再写入到另一个文件中。问题是怎样取出数据呢(先对第一行的每一个数据进行操作,完成之后将结果保存到另一个文本文件中;对第二行数据进行同样的操作。)?如果是C\C++语言就比较容易,shell刚刚接触,不会呢。先谢谢大家了。 展开
 我来答
百度网友5311d79
推荐于2018-03-12 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3194万
展开全部
用awk工具,awk本身就是以行为单位处理文本流的,还可以根据指定分隔符(默认是TAB或空格)对每行的字段进行操作。

使用如下结构也可以达到你的目的:
cat file.txt | while read line
do
#处理每行内容 "$line"
done
或者:
while read line
do
#处理每行内容 "$line"
done <file.txt

建议直接给出具体要求,给出源文件的格式示例以及最终要求达到的效果。
更多追问追答
追问
好的。文本流格式是:

1.1 0xD8130000 0x0 0x3 0x0 0x0
1.2 0xD8130000 0x4 0x7 0x0 0x0

上面这样的。
操作如下:
1、第一行,取出每一列的数据,有六个,分别赋值给六个变量,这六个变量与相应寄存器在内存中的数据进行对比,是否可读可写,比较之后将测试结果输出到另一个文本文件中,作为一行。
2、第一行处理完毕,接着第二行处理,方式与1是一样的。
追答
#!/bin/bash
srcFile=/path/file.txt
desFile=/path/output.txt
cat $srcFile | while read line
do
    # Acquire all 6 data in a line and put into array
    for i in `seq 6`
    do
       data[$i]=`echo "$line" | awk -v a=$i '{print $a}'`
       # 与相应寄存器在内存中的数据进行对比
       # 将返回的测试结果字符串与上次结果字符串连接起来,中间用空格分隔
       # 例如:ret="$ret $result"
    done
    ret=${ret:1} #Remove the 1st space
    echo "$ret" >>$desFile
done

 shell无法直接操作内存,”与相应寄存器在内存中的数据进行对比并输出测试结果“,这个只能通过调用外部工具来实现。

discovery522
推荐于2016-09-23 · TA获得超过4714个赞
知道大有可为答主
回答量:2308
采纳率:71%
帮助的人:1511万
展开全部
使用如下数据结构:

cat file.txt | while read line
do
#处理每行内容 "$line"
done
或者:
while read line
do
#处理每行内容 "$line"
done <file.txt
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
甜贝贝0212
2013-07-12
知道答主
回答量:24
采纳率:0%
帮助的人:9.5万
展开全部
用awk命令应该可以解决你的问题,不过你的问题再具体点就更好回答了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式