❶ linux shell 如何把txt文本中每一行提取出来赋值给一变量,再输出这一变量
使用cat的话可以这样:
cat 123.txt | while read line
do
echo "$line"
done
123.txt的每行读取到变量line中并输出。
❷ 在shell编程中,怎样对每一行每一列的数据进行操作
用awk工具,awk本身就是以行为单位处理文本流的,还可以根据指定分隔符(默认是TAB或空格)对每行的字段进行操作。
使用如下结构也可以达到你的目的:
cat file.txt | while read line
do
#处理每行内容 "$line"
done
或者:
while read line
do
#处理每行内容 "$line"
done <file.txt
建议直接给出具体要求,给出源文件的格式示例以及最终要求达到的效果。
❸ linux的shell脚本对比a文件中的每一行内容是不是在b文件中也有这么一行内容
1.不考虑效率的话,可以尝试,每读取一行a ,遍历b的每一行查看是否匹配.(shell大致如下,没有自己去运行,或许需要调试)
cata.txt|whilereadlinea
do
catb.txt|whilereadlineb
do
if["$linea"="$lineb"];then
echo"$linea"
fi
done
done
2.如果不存在b的一行会包含a的一行.还可以尝试遍历a的每一行,然后在b中查找.具体的需要根据文本特点.来分析.
❹ 谁能帮忙解释下linux shell程序中的sed "s/$//;s/ *//g;/^$/d" 这句是什么意思
意思是删除空行,空行包括没有任何字符的空行,和只有若干个空格的空行。
1、s/$// 在每一行后面追加空。
2、s为搜索。
如:s/a/b/
搜索a将替换为b ,并只替换一次。
3、s/ *//g 将空格删除。
4、g代表搜索到的全部替换 。
5、“空格星”(" *") 代理多个空格。
6、/^$/d 删除空行。
作用
catfile.pl
useGetopt::Std;
usevarsqw($opt_d$opt_f$opt_p);
getopts('d:f:p');
print"$opt_d=>$opt_d "if$opt_d;
print"$opt_f=>$opt_f "if$opt_f;
print"$opt_p=>$opt_p
"if$opt_p;
然后在命令行中运行:
perlfile.pl-d20040412-flouiskoochen-p
可得到下列形式的输出:
$opt_d=>200040412
$opt_f=>louiskoochen
$opt_p=>1
解释一下"d:f:p",d和f后有冒号,表示-d,-f后面要跟参数。p后面没有冒号,表示-p后面不带参数。而且-d,-f后所跟的参数分别赋给变量$opt_d和$opt_f。对于变量$opt_p,若命令行加了-p,则$opt_p=1,否则为0。