我需要在shell脚本中的“。”字符串(即'*')中获取第一个块。我发现它不是打印字符串而是显示当前目录中所有文件的列表。
如何克服这个问题?
主要目的是将字符串“asterisk.asterick”(从/etc/rsyslog.conf中读取)更改为“* .debug”,这里第一个字段我需要保持原样,只需要更改第二个字段。
root@xyz-node:/tmp# ccvv=*.*
root@xyz-node:/tmp# echo ccvv
ccvv
root@xyz-node:/tmp# echo $ccvv
new_script.sh rsyslog.conf rsyslog.confe tmp.8R7bE0tYbg
root@xyz-node:/tmp#
root@xyz-node:/tmp#
root@xyz-node:/tmp# echo $ccvv|cut -d "." -f1
new_script
答案 0 :(得分:3)
实际上你必须引用变量本身。
echo "$ccvv"
答案 1 :(得分:1)
据我理解......
$ echo "*.*"
*.*
$ ccvv="*.*"
$ echo $ccvv
*.*
或者
答案 2 :(得分:0)
您可以使用sed
替换:
sed -i.bak 's/\([a-zA-Z0-9*]\+\.\).*/\1debug/g' InputFile
此处.bak
将在替换之前创建名为InputFile.bak
的备份文件。
示例输入:
some text
*.conf
some text
some.text
输出:
some text
*.debug
some text
some.debug