shell脚本substr(SHELL脚本对LINUX下指定文本文件的满足条件的行的特定位置字符串进行替换)

本文目录
- SHELL脚本对LINUX下指定文本文件的满足条件的行的特定位置字符串进行替换
- 如何使用shell 批量ping域名,生成一个结果文件
- linux shell脚本,如何用星号 输出“李“这个字
- shell中取字符串子串的几种方式
- 如何用shell脚本语言去截取字符串
- linux脚本将文本中的数据除以固定的数
SHELL脚本对LINUX下指定文本文件的满足条件的行的特定位置字符串进行替换
YDAY=$(date +"%Y%m%d" -d "-1 days")
TDAY=$(date +"%Y%m%d")
awk -v YDAY=$YDAY -v TDAY=$TDAY ’
NR==1 {
if(substr($0,20,8)==YDAY)
$0=substr($0,1,19) TDAY substr($0,28)
if(substr($0,34,8)==YDAY)
$0=substr($0,1,33) TDAY substr($0,42)
}
/^TH/{
if(substr($0,21,8)==YDAY)
$0=substr($0,1,20) TDAY substr($0,29)
}
{print }’ 文件名
如何使用shell 批量ping域名,生成一个结果文件
脚本:
#!/bin/sh
filename=domains.txt
ping_count=3
while read domain; do
x=$(ping -W 1 -c $ping_count $domain 2》/dev/null | grep -E "(PING)|(loss)")
loss=$(echo "$x" | grep "loss" | awk ’{printf "%s", substr($6, 1, length($6)-1)}’)
if ; then
echo "$x" | grep "PING" | awk ’{printf "%s no ping\n", $2}’
else
echo "$x" | grep "PING" | awk ’{printf "%s %s\n", $2, substr($3, 2, length($3)-2)}’
fi
done 《$filename
可适当调整每个域名 ping 的次数(ping_count),以保证准确度和性能。
数据文件:
cat domains.txt
www.baidu.com
www.taobao.com
www.qq.com
www.baidud.com
结果:
www.baidu.com 14.215.177.38
www.taobao.com 183.61.241.252
www.qq.com 59.37.96.63
www.baidud.com no ping
另:我理解那个“地名”应该是“域名”误写,如果真的需要地名,可以借助 whois 命令,甚至 IP 数据库(比如纯真数据库)。
linux shell脚本,如何用星号 输出“李“这个字
用PHP获得这个字的代码、点阵和验证:
《?php
$hz="李";
$n=ord($hz);
$n1 = ord(substr($hz,0,1)) - 160;
$n2 = ord(substr($hz,1,1)) - 160;
$offset = ($n1-1)*94 + ($n2-1);
echo "汉字【{$hz}】,内码【".bin2hex($hz)."】,区【{$n1}】,位【{$n2}】,字库偏移【{$offset}】\n";
$hzk=substr(file_get_contents(’hzk16’),$offset * 32,32);
//显示字库
$dbstr=;
for ($i=0;$i《32;$i++) {
$dbstr=ord(substr($hzk,$i,1));
}
echo implode(’,’,$dbstr) . "\n";
//显示汉字
for ($i=0;$i《32;$i++) {
$c=ord(substr($hzk,$i,1));
//echo "$c:\n";
$m = 1《《7;
for ($j=0;$j《8;$j++){
//echo "({$j} {$m} ";
echo ($c & $m) ? ’*’ : ’.’;
//echo ")\n";
$m 》》= 1;
}
if ($i % 2 == 1) echo "\n";
}
?》
运行结果见下图:
那么你需要的shell脚本为:
echo ’ *’
echo ’ * *’
echo ’ *************’
echo ’ *’
echo ’ * * *’
echo ’ * * **’
echo ’ ** * ***’
echo ’** * *’
echo ’ *******’
echo ’ *’
echo ’ ** *’
echo ’ *************’
echo ’ *’
echo ’ *’
echo ’ * *’
echo ’ *’
shell中取字符串子串的几种方式
shell中截取字符串的方法有很多中,
${expression}一共有9种使用方法。
${parameter:-word}
${parameter:=word}
${parameter:?word}
${parameter:+word}
上面4种可以用来进行缺省值的替换。
${#parameter}
上面这种可以获得字符串的长度。
${parameter%word} 最小限度从后面截取word
${parameter%%word} 最大限度从后面截取word
${parameter#word} 最小限度从前面截取word
${parameter##word} 最大限度从前面截取word
上面4个就是用来截取字符串的方法了。
有了着四种用法就不必使用cut命令来截取字符串了
第一种又可以分为四种情况,下面一一介绍。
1、使用 # 号操作符。用途是从左边开始删除第一次出现子字符串即其左边字符,保留右边字符。用法为#*substr,例如:
***隐藏网址***
echo ${str#*//}
得到的结果为www.你的域名.com/cut-string.html,即删除从左边开始到第一个"//"及其左边所有字符2、使用 ## 号操作符。用途是从左边开始删除最后一次出现子字符串即其左边字符,保留右边字符。用法为##*substr,例如:
***隐藏网址***
echo ${str##*/}
得到的结果为cut-string.html,即删除最后出现的"/"及其左边所有字符
3、使用 % 号操作符。用途是从右边开始删除第一次出现子字符串即其右边字符,保留左边字符。用法为%substr*,例如:
***隐藏网址***
echo ${str%/*}
***隐藏网址***
4、使用 %% 号操作符。用途是从右边开始删除最后一次出现子字符串即其右边字符,保留左边字符。用法为%%substr*,例如:
***隐藏网址***
echo ${str%%/*}
***隐藏网址***
第二种也分为四种,分别介绍如下:
1、从左边第几个字符开始以及字符的个数,用法为:start:len,例如:
***隐藏网址***
echo ${var:0:5}
其中的 0 表示左边第一个字符开始,5 表示字符的总个数。
***隐藏网址***
2、从左边第几个字符开始一直到结束,用法为:start,例如:
***隐藏网址***
echo ${var:7}
其中的 7 表示左边第8个字符开始
结果是:www.你的域名.com/cut-string.html
3、从右边第几个字符开始以及字符的个数,用法:0-start:len,例如:
***隐藏网址***
echo ${str:0-15:10}
其中的 0-6 表示右边算起第6个字符开始,10 表示字符的个数。
结果是:cut-string
3、从右边第几个字符开始一直到结束,用法:0-start,例如:
***隐藏网址***
echo ${str:0-4}
其中的 0-6 表示右边算起第6个字符开始,10 表示字符的个数。
结果是:html
注:(左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示)。
如何用shell脚本语言去截取字符串
一. 概念
在shell中通过截取字符串操作可以提取到我们所需要的特定字符串
二. 操作符
① #表示 从左截取,删除左边字符,保留右边字符
其中 str是变量名,# 号是运算符,*//表示从左边开始删除第一个 //号及左边的所有字符
② %表示从右边开始截取,删除右边字符,保留左边字符
其中str是变量名,%号是运算符,/*表示从右边开始删除第一个/号及右边的所有字符
③ ##表示从左边开始截取,删除左边字符,保留右边字符
其中str是变量名,##号是运算符,*/表示从左边开始匹配最后一个(最右边一个)/,并且删除该/及前面的所有字符
④ %%表示从右边开始截取,删除右边字符,保留左边字符
其中str是变量名,%%号是运算符,/*表示从右边开始匹配最后一个(最左边一个)/,并且删除该/及右边的所有字符
⑤ 从左边第几个字符开始,及字符的个数
其中的 0 表示左边第一个字符开始,10表示字符的总个数。
三.采用cut工具截取
-c选项表示用字符定位: 3,7表示截取第三个字符和第七个字符,4-9表示截取第四个字符到第九个字符
linux脚本将文本中的数据除以固定的数
方法就是给出的awk语句:
echo 123.321.aaa92 | awk ’{ i = index($0,"aaa"); pos = i+3; m = substr($0,1,pos-1); n = substr($0,pos); n+=1;printf("%s%s\n",m,n); }’

更多文章:
shell脚本substr(SHELL脚本对LINUX下指定文本文件的满足条件的行的特定位置字符串进行替换)
2026年9月27日 10:50
dos显示文件内容命令(DOS下DIR命令查看文件 文件太多 屏幕上面的看不见 怎么办)
2026年9月27日 10:20
oracle维护中的常见问题(紧急求助:oracle内存不释放的故障)
2026年9月27日 04:40
flash脚本编写(flash中点击一个按钮跳转到第二帧,再点击回到第一帧,这么脚本怎么编写)
2026年9月27日 01:10
asc文件怎么转化为txt(geomagic studio2013怎么转换txt文件)
2026年9月26日 21:30
oracle insert 系统时间(Oracle数据库中插入timestamp类型的数据)
2026年9月26日 21:10
python调用pascal(在编程语言中是什么地位为什么很多大学不教 Python)
2026年9月26日 20:20




