sed \s

export m1=`free|cut -d ":" -f2|sed -e "s/^\s\s*//g"|head -2|tail -1|cut -d ' ' -f1`
 
#free
total used free shared buff/cache available
Mem: 1002664 27516 803344 248 171804 961688
Swap: 0 0 0
 
cut -d ":" -f2
以:为分隔符,打印出第二部分
     total used free shared buff/cache available
     1002664 27516 803344 248 171804 961688
     0 0 0
sed -e "s/^\s\s*//g" 表示将行头空白字符去除掉
\s 匹配任何空白字符,包括空格、制表符、换页符等等。
 
非打印字符
非打印字符也可以是正则表达式的组成部分。下表列出了表示非打印字符的转义序列:
字符     描述
\cx     匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
\f     匹配一个换页符。等价于 \x0c 和 \cL。
\n     匹配一个换行符。等价于 \x0a 和 \cJ。
\r     匹配一个回车符。等价于 \x0d 和 \cM。
\s     匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。注意 Unicode 正则表达式会匹配全角空格符。
\S     匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t     匹配一个制表符。等价于 \x09 和 \cI。
\v     匹配一个垂直制表符。等价于 \x0b 和 \cK。
 
|head -2|tail -1| 取出前两行后一行
1002664 27516 803344 248 171804 961688
 
cut -d ' ' -f1
以空给为分隔符,打印出第一部分
 
export m=`expr $m1 \* $1 / 100 / 1024`
乘法操作应采用 \* 转义,避免被作为Shell通配符

转载于:https://www.cnblogs.com/idyllcheung/p/10826266.html

<think>好的,我需要解答用户关于sed命令中s参数和-i选项的含义及用法的问题。首先,我需要回忆自己对sed的了解,并确保信息的准确性。根据用户提供的引用内容,特别是引用[3]和引用[4],里面提到了s命令和-i选项的相关信息。 首先,s参数是sed中的替换命令,用于文本替换。格式通常是s/正则表达式/替换内容/标志。比如s/old/new/g,这里的g表示全局替换。需要确认是否有其他标志,比如数字表示替换第几次出现,或者p用于打印等。同时,引用[4]提到s命令通常搭配正则表达式使用,所以需要强调这一点。 然后是-i选项,用户提到引用[3]中的sed -i命令,说明-i用于直接修改文件内容,而不是输出到终端。不过要注意不同系统中-i可能需要指定备份后缀,比如在macOS中可能需要写成-i '',而Linux下可以直接用-i。这部分可能需要提醒用户注意系统差异。 接下来需要组织回答结构,按照用户要求的结构清晰,分点说明s参数和-i选项的用法,并给出示例。同时,根据系统级指令,行内数学表达式用$...$,但这里可能用不上。但需要注意中文回答和正确使用引用标记。例如,在提到s命令时,引用[4],提到-i时引用[3]。 然后生成相关问题,可能需要考虑sed的其他子命令,如d、p、a等,或者其他选项如-n,以及如何处理多文件操作等。确保问题相关且有助于用户进一步学习。 最后,检查引用是否正确地附加在相关段落的末尾,例如在解释s命令时引用[4],在解释-i时引用[3]。同时,确保示例代码正确,比如使用反引号包裹代码块,并正确转义符号。 现在,可能需要确认引用的正确性。引用[4]中确实提到了s命令用于取代,并且可以搭配正则表达式。引用[3]提到了sed -i命令,用于直接修改文件。因此,这些引用是合适的。 在编写示例时,要确保语法正确。例如,使用单引号包裹sed命令,正确的替换格式,以及-i选项的使用。同时,提醒用户注意备份文件的问题,避免数据丢失。 总结来说,回答的结构应该分为两部分:s参数和-i选项,分别解释其含义、语法、用法示例,并附上相关引用。然后生成的问题可以涉及其他参数、选项,或常见问题解决方法。</think>### sed命令中`s`参数与`-i`选项详解 #### 1. **`s`参数(替换命令)** **含义**: `s`是sed的**替换命令**,用于匹配文本中的模式并替换为指定内容,语法为: $$s/正则表达式/替换内容/标志$$ 其中: - **正则表达式**:定义需要匹配的模式 - **替换内容**:替换后的字符串 - **标志**:可选参数,如`g`(全局替换)、`p`(打印替换行)等[^4]。 **用法示例**: - **替换某行第一个匹配项**: ```bash sed 's/old/new/' file.txt # 将每行第一个"old"替换为"new" ``` - **全局替换**: ```bash sed 's/old/new/g' file.txt # 替换所有"old"为"new" ``` - **指定行范围替换**: ```bash sed '1,5s/old/new/g' file.txt # 仅替换1-5行的所有"old" ``` #### 2. **`-i`选项(直接修改文件)** **含义**: `-i`选项使sed**直接修改原文件**,而非仅输出到终端。为防止数据丢失,建议搭配备份后缀使用: ```bash sed -i.bak 's/old/new/g' file.txt # 修改原文件并生成备份文件file.txt.bak ``` 注意:在macOS中需写成`-i ''`以省略备份[^3]。 **用法示例**: - **直接修改文件**: ```bash sed -i 's/error/warning/g' log.txt # 将log.txt中所有"error"替换为"warning" ``` - **批量处理多个文件**: ```bash sed -i 's/foo/bar/g' *.txt # 替换所有.txt文件中的"foo"为"bar" ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值