shell脚本处理文本信息
- 逐行读取信息
// 1
for line in test.txt:
do
echo $line
...
done
// 2
while read line
do
echo $line
...
done < test.txt
// 3
cat test.txt | while read line
do
echo $line
...
done
- 截取行列字符串
cut
- -b:以字节为单位进行分割
echo "zxcvbnm" | cut -b 2-5
>>xcvb
echo "zxcvbnm" | cut -b 2, 5
>>xb
echo "zx:cv:bn:mm" | cut -d ':' -f 1-3
>>zx:cv:bn
- -d:按列进行分割
echo "zxcvbnm" | cut -d 2
<<x
-c、-f、-n模式,详情见博客。
awk
一个强大的文本编辑工具:可以抽取:行、列、指定字符串,按照指定的域分隔符把文本分成n个域,语法是:awk -F "域分隔符" file,默认分隔符是空格键;然后每个域都用一个名字$n,n取自然数,当n=0的时候,代表整个文档,n=1的时候代表第一个域的值,依此类推。
echo $line | awk -F ',' -f1
- 联合处理
while read line
do
num=$(echo $line | awk '{print $1}')
name=$(echo $line | cut -b 2)
echo $line
echo $num
echo $name
done < test.txt
上述代码可以逐行处理文本信息,并可以截断每一行的信息,赋值给变量,实现shell脚本的文本数据读取功能。
参考博客:










网友评论