shell 如何判断某个文件名以某个字符开头~

问题:shell 如何判断某个文件名以某个字符开头~
解决:
#var="cn get the length of me"
#$1: parameter 1 传要判断的文件名字
var=$1
isCN=false

# ${var:0:2} 取var子串,从第0个字符起,取2两个字符

if [[ ${var:0:2} -eq "cn" ]]
then
echo sub is  chinese ${var:0:2}
else
echo sub is english ${var:0:2}
fi
#function :判断
ISCN()
{
if [[ ${var:0:2} -eq "cn" ]]
then
  echo "in ISCN"
  isCN=true
fi
}

#执行function
ISCN

echo the last isCN $isCN
=================================================================
一,shell取子串常用:
1)
echo ${string:1:2}
2)echo $string |cut -c 2-3 (取string 的第2到第3个字符)

二, 对字符串的处理

包括:截取,连接,匹配,替换,翻转... ... 
字符串的处理:
1,截取
方法一:
echo $a|awk '{print substr( ,1,8)}'
substr是awk中的一个子函数,对第一个参数的进行截取,从第一个字符开始,共截取8个字符,如果不够就从第二个字符中补
方法二
echo $a|cut -b2-8
cut:对标准输入的字符串进行处理
cut -bn-m:以byte为单位,从第n个byte开始,取m个
cut -bn,m:以byte为单位,截取第n,m个byte
cut -b-n,m:以byte为单位,截取1-n,和第m个
-c:以charactor为单位
-d:指定分隔符,默认为tab
-s:使标准输入中没有delimeter
cut -f1:截取第1个域
方法三
a=123456
echo ${string:1:2}
方法四
使用sed截取字符串的最后两位
echo $test |sed 's//(.*/)/(../)$//'
截取字符串的前2位
echo $test |sed 's/^/(../)/(.*/)//'
欢迎访问007电脑资讯
2,比较
好像没有什么可以比较的
3,连接
$a$b
或者
$string
4,翻转
方法一
使用rev命令
方法二
编写脚本实现
#!/usr/bin/awk -f
################################################################
# Description : duplicate rev in awk
################################################################
{
revline = ""
for (i=1;i<=length;i++)
{
revline = substr(,i,1) revline
}
}
END{print revline}

5,匹配
grep
egrep
fgrep
6,排序
7,替换
bash中:
%x=abcdabcd
%echo $ # 只替换一个
bbcdabcd
%echo $ # 替换所有
bbcdbbcd
sh中:
??
如何替换/
使用sed
替换所有匹配
echo $test |sed 's/xx/yy'
替换单个匹配
??
8,得到字符串的长度:
bash当中
$
或者
expr "$VAR" : '.*'
9,判断字符串是否为数字
10,得到字符串中某个字符的重复次数
echo $a |tr "x" "/n" |wc -l
得到的结果需要减去1
或者 echo $a |awk -F"x" '{print NF-1}'
11,得到字符串中某个string的重复次数 007电脑资讯
12,将一批文件中的所有string替换
for i in file_list
do
vi $i <<-!
:g/xxxx/s//XXXX/g
:wq
!
done
13,如何将字符串内每两个字符中间插入一个字符
使用sed
echo $test |sed 's/../&[insert char]/g'


 
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用grep命令来匹配以"Upload attachment"开头的行,具体命令如下: ```shell grep "^Upload attachment" file.txt ``` 其中,"^"表示以指定的文本开头,"file.txt"是待匹配的文件名,你可以将其替换成你要匹配的文件名。此命令会输出所有以"Upload attachment"开头的行。 ### 回答2: 在shell脚本中,我们可以使用正则表达式来匹配以"Upload attachment"开头字符串。在这种情况下,可以使用grep命令来进行匹配。 下面是一个示例脚本: ```shell #!/bin/bash # 定义要匹配的字符串 string="Upload attachment hello world" # 使用grep命令进行匹配 if echo "$string" | grep -q "^Upload attachment"; then echo "匹配成功,字符串以\"Upload attachment\"开头" else echo "匹配失败,字符串不以\"Upload attachment\"开头" fi ``` 在上面的脚本中,我们首先定义了要匹配的字符串为"Upload attachment hello world"。然后使用grep命令对该字符串进行匹配,使用正则表达式"^Upload attachment"来限定匹配以"Upload attachment"开头的部分。 如果匹配成功,即字符串以"Upload attachment"开头,将输出"匹配成功,字符串以\"Upload attachment\"开头";如果匹配失败,将输出"匹配失败,字符串不以\"Upload attachment\"开头"。 这样,我们就可以通过脚本来判断一个字符串是否以"Upload attachment"开头了。注意,脚本中的匹配规则和目标字符串需要根据实际情况进行修改。 ### 回答3: 在Shell脚本中,可以使用特定的命令和符号来匹配以"Upload attachment"开头的文本。 一种方法是使用grep命令。grep命令用于在文本中搜索符合特定模式的行,并将其输出。下面是一个示例: ```bash grep "^Upload attachment" filename.txt ``` 上述命令将从名为filename.txt的文件中匹配以"Upload attachment"开头的行,并将其输出打印到终端上。你也可以将结果输出到另一个文件中,如下所示: ```bash grep "^Upload attachment" filename.txt > result.txt ``` 另一种方法是使用通配符*来进行匹配。通配符*表示零个或多个任意字符。下面是一个示例: ```bash for file in *; do if [[ $file == "Upload attachment"* ]]; then echo $file fi done ``` 上述代码将遍历当前目录中的所有文件,并检查每个文件名是否以"Upload attachment"开头。如果是,则将文件名打印到终端上。你也可以将结果输出到另一个文件中,如下所示: ```bash for file in *; do if [[ $file == "Upload attachment"* ]]; then echo $file >> result.txt fi done ``` 以上是两种常见的方法来匹配以"Upload attachment"开头的文本。你可以根据实际情况选择其中之一,并根据需求做出相应的适配和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值