2021-09-08

shell脚本处理文本信息

  1. 逐行读取信息
// 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
  1. 截取行列字符串
    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
<

-c、-f、-n模式,详情见博客。

awk
一个强大的文本编辑工具:可以抽取:行、列、指定字符串,按照指定的域分隔符把文本分成n个域,语法是:awk -F "域分隔符" file,默认分隔符是空格键;然后每个域都用一个名字$n,n取自然数,当n=0的时候,代表整个文档,n=1的时候代表第一个域的值,依此类推。

echo $line | awk -F ',' -f1
  1. 联合处理
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脚本的文本数据读取功能。

参考博客:

  • https://www.cnblogs.com/chenxiaomeng/p/10066821.html
  • https://blog.csdn.net/menlinshuangxi/article/details/7979504?spm=1001.2014.3001.5501

你可能感兴趣的:(2021-09-08)