删除 shell 中的符号
我是 shell 脚本新手,现在使用 csh ,假设我的配置文件中有一行,如下所示:
127.0.0.1:2222 127.0.0.2:3333 127.0.0.3:4444
我想要的只是解析数组中的两个变量:
2222 3333 4444
和另一个
127.0.0.1 127.0.0.2 127.0.0.3
I'm new to shell scripting, right now using csh and let's say I have a line in my configuration file like this:
127.0.0.1:2222 127.0.0.2:3333 127.0.0.3:4444
All I want is to parse it for two variables in array :
2222 3333 4444
And another one
127.0.0.1 127.0.0.2 127.0.0.3
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
阅读“C Shell 编程被认为有害'。
如何在配置文件中获得正确的行?我假设文件中只有一行,但只要您可以识别该行,就有办法做到这一点。
第一个捕获点分十进制地址后面的“端口号”。第二个捕获地址。在每种情况下,结果都会分配给一个字符串,并用空格分隔值。
一些更多的手动攻击(在 MacOS X 10.5.8 上 - 'man csh' 打印 'tcsh' 页面)表明您可能会:
使用这种符号(反引号 sed 命令周围的括号),您创建数组,并且可以使用:(
假设样本数据)。手册页中注明这一点的部分用“(+)”标记了语法,这很可能意味着“标准 C shell 的扩展”,因此这是否适合您可能取决于您的环境。
Read 'C Shell Programming Considered Harmful'.
How do you get the right line in the configuration file? I'm about to assume there's just the one line in the file, but as long as you can identify the line, there are ways to do it.
The first captures the 'port numbers' after the dotted-decimal addresses. The second captures the addresses. In each case, the result is assigned to a string with spaces separating the values.
Some more manual bashing (on MacOS X 10.5.8 - 'man csh' prints the 'tcsh' page) suggests you might be after:
With this notation (the parentheses around the back-quoted sed command), you create arrays, and can use:
(assuming the sample data). The part of the manual page where this is noted marks the syntax with '(+)' which might well mean 'extension to standard C shell', so whether this works for you may depend on your environment.