❶ 如果一个文件有1000个字符如何在linux 中用shell实现从第20个字符读取10个字符。
文件看文件是什么格式,共几行,如果返回第一行中的20个字符开始往后10个字符的内容:
head -1 filename |awk '{print substr($0,20,10)}'
❷ 每天三分钟搞定linux shell脚本10 字符串相关的if判断
字符串比较包括
注意 :这里的符号要 转义 ,否则变成了重定向了。
运行结果:
注意 :上面的 等号左右两侧 , 中括号内侧 一定要有空格
运行结果:
以上的例子,说明 小写字母排在字典的后面 (类似于ascii的大小)。
sort 可以对字符串排序,sort 命令会把小写字母放在前面 。
运行结果:
注意上面的 中括号内侧 一定要有空格。
注意做庆 :有时候想在字符串比较的时候使用 正则表达式 ,可以使用 双方括号 ,如:
运行如下:
注意:上面的 双樱早等号左右两侧,中括号内侧 一定要有脊胡雀空格
❸ 如何用shell提取文件中指定的字符串
cut命令
用法: cut 参数 文件名
说明:cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
参数:
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
更多参数请参考:cut - -help
-b用法:
以字节为单位,指定相应的字节输出,由于一个英文字符只占用一个字节,所以对英文字符可以与-c等价,但是占用多个节编码的字符不适用,比如中文;
文件内容:
$ cat test.txt
1234567890
ABCDEFGHIJ
abcdefghij
hello wrold!
指定文件中每行的第1,3到7个字符输出:
cut -b 1,3-7 test.txt
134567
ACDEFG
acdefg
hllo w
-n表示1到前n个字符,n-表示从n开始的所有字符
打印前两个字符和从第8个开始的字符
$ cut -b -2,8- test.txt
12890
ABHIJ
abhij
herold!
中文:
文件内容:
$ cat test1.txt
我们好像在哪见过
你记得吗?
好像那是一个春天!
❹ Linux:用shell如何实现读取一个字符串的第n个字符呢
代码如下:
str="/home/gateman"
if [ ${str:0:1} = "核租/" ]; then
echo "yes'
fi
${str:0:1} 中0表示从第几个字符开始,1表示截取多长。
Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本,常见的脚本解释器有:
bash:是Linux标准默认的shell。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的缩写,内部命令一共有40个。
sh:由Steve Bourne开发,是Bourne Shell的缩写,sh 是Unix 标准默认的shell。
另外还有:ash、 csh、 ksh等。
(4)shell读文件取字符比较扩展阅读
Linux shell 截取字符销顷变量的前8位:
实现方法有如下几种:
expr substr “$a” 1 8
echo $a|awk ‘{print substr(,1,8)}’
echo $a|cut -c1-8
echo $
expr $a : ‘(.\).*’
echo $a|dd bs=1 count=8 2>/dev/null
按照指定要求分割:
比如获取后缀名
ls -al | cut -d “.” -f2
小结:shell对应字符串的处理方法很多,根据需求灵活选择。
在做shell批处理程序时候,经常会涉及到字符串相关操作。有很多命令语句,如:awk,sed都可以做字符串各种操作。 其实shell内置一系列操作符号,可以达到类似效果,大家知亏氏陆道,使用内部操作符会省略启动外部程序等时间,因此速度会非常的快。
❺ 如何用shell提取文件中指定的字符串
shell读取文件的指定行字符串
在得到数行输出时,需要得到指定行的字段,可以使用该指令。
sed -n Np 文件名
如sed -n 2p xxx 输出结果即为第二行的内容
在shell脚本中有时需要按行读出文件的内容,比如文件中每一行的命令等。
假设存在文件filename,需要从中按行读取内容,并在每行的开头增加字符串command,命令如下
cat filename | while read line; do echo "command $line"; done!