linux如何去空格

http://www.cnblogs.com/charlesblc/p/6017596.html

cut命令如何截取以空格隔开的字段 

你的文件分隔符恐怕不止一个空格(一定的who生成的): 
awk: 
awk '{print $2}' file 
一定要用cut的话: 
cat file|tr -s ' '|cut -d' ' -f2

 

通过使用 tr,您可以非常容易地实现 sed 的许多最基本功能。您可以将 tr 看作为 sed 的(极其)简化的变体:它可以用一个字符来替换另一个字符,或者可以完全除去一些字符。您也可以用它来除去重复字符。这就是所有 tr 所能够做的。  

 

tr -c -d -s ["string1_to_translate_from"] ["string2_to_translate_to"] < input-file
这里:
-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。(不怎么用到吧)
-d 删除字符串1中所有输入字符。
-s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。

可以有:

# cat file | tr "abc" "xyz" > new_file

 

【注意】这里,凡是在file中出现的"a"字母,都替换成"x"字母,"b"字母替换为"y"字母,"c"字母替换为"z"字母。而不是将字符串"abc"替换为字符串"xyz"。

 

2、使用tr命令“统一”字母大小写

(小写 --> 大写)
# cat file | tr [a-z] [A-Z] > new_file

(大写 --> 小写)
# cat file | tr [A-Z] [a-z] > new_file

 

3、把文件中的数字0-9替换为a-j

 

# cat file | tr [0-9] [a-j] > new_file

4、删除文件file中出现的"Snail"字符

 

# cat file | tr -d "Snail" > new_file

 

【注意】这里,凡是在file文件中出现的'S','n','a','i','l'字符都会被删除!而不是紧紧删除出现的"Snail”字符串。

 

5、删除文件file中出现的换行'\n'、制表'\t'字符

 

# cat file | tr -d "\n\t" > new_file

 

不可见字符都得用转义字符来表示的,这个都是统一的。

 

6、删除“连续着的”重复字母,只保留第一个

 

# cat file | tr -s [a-zA-Z] > new_file

7、删除空行

 

# cat file | tr -s "\n" > new_file

 

8、删除Windows文件“造成”的'^M'字符

 

# cat file | tr -d "\r" > new_file
或者
# cat file | tr -s "\r" "\n" > new_file

 

【注意】这里-s后面是两个参数"\r"和"\n",用后者替换前者

 

实验了:

$ echo 'aabc' | tr -s 'a' 'd'

dbc

 

<think>好的,用户现在问的是如何在Linux中去除空格。之前他们问了关于Jenkins和Git获取分支的问题,现在转到Linux文本处理,可能他们在处理脚本或自动化流程中的文本数据。需要先理解用户的具体需求:是删除文件中的空格,还是处理字符串变量中的空格?或者是文件名中的空格? 用户可能是在处理文本文件,比如日志文件或数据文件,需要清理空格以便进一步处理。或者是在脚本中处理命令输出的结果,去除多余的空格来提取信息。比如,可能有一个包含多余空格的文本行,用户希望删除这些空格以便于解析。 需要区分几种情况:删除行首行尾的空格、删除所有空格、压缩连续空格为单个空格,或者替换特定位置的空格。不同的情况需要不同的命令,比如sed、awk、tr等工具的使用。 另外,用户可能对Linux命令不太熟悉,需要给出具体的例子和解释,确保他们能够理解每个步骤的作用。比如,使用sed的正则表达式来匹配行首行尾的空格,或者用tr命令删除所有空格。 还要考虑到用户可能的错误操作,比如误删所有空格导致数据格式错误,所以需要提醒注意事项,比如备份原文件,确认命令效果后再执行。 最后,可能需要给出常见用例,比如处理CSV文件、日志清理等,帮助用户更好地应用这些命令。同时,提供一些进阶技巧,比如结合多个命令或脚本自动化处理,以满足更复杂的需求。</think>在 Linux 中去除文本中的空格(或空白字符)有多种方法,具体需求不同,使用的命令也会有所差异。以下是常见的场景和操作方式: --- ### **1. 删除行首/行尾的空格(Trim)** - **目标**:删除每行开头和结尾的空格或制表符。 - **命令**: ```bash # 使用 sed sed 's/^[ \t]*//;s/[ \t]*$//' input.txt > output.txt # 使用 awk awk '{$1=$1};1' input.txt > output.txt # 会同时压缩中间空格 ``` --- ### **2. 删除所有空格** - **目标**:删除文本中所有空格(包括行内)。 - **命令**: ```bash # 使用 tr 删除所有空格(包括换行符后的空格) tr -d ' ' < input.txt > output.txt # 使用 sed 删除所有空格保留换行符) sed 's/ //g' input.txt > output.txt ``` --- ### **3. 压缩连续空格** - **目标**:将多个连续空格替换为单个空格。 - **命令**: ```bash # 使用 tr + sed tr -s ' ' < input.txt > output.txt # 压缩连续空格为单空格 sed 's/ \+/ /g' input.txt > output.txt # 同上(正则匹配多个空格) # 使用 awk awk '{$1=$1};1' input.txt > output.txt # 自动压缩空格并对齐 ``` --- ### **4. 删除特定位置的空格** - **示例**:删除每行的第 2 个空格(或特定位置)。 ```bash # 删除第2个空格(仅替换一次) sed 's/ /-/2' input.txt > output.txt # 将第2个空格替换为"-" ``` --- ### **5. 处理变量中的空格** - **Shell 变量**:去除变量字符串中的空格。 ```bash # 定义变量 str=" Hello World " # 删除所有空格 echo "${str// /}" # 输出: HelloWorld # 删除首尾空格(需要 Bash 4+) trimmed=$(echo "$str" | xargs) # xargs 默认会去除首尾空格 echo "$trimmed" # 输出: "Hello World" ``` --- ### **6. 处理文件名中的空格** - **目标**:批量删除文件名中的空格(替换为下划线 `_`)。 ```bash find . -name "* *" -exec rename 's/ /_/g' {} \; ``` --- ### **常见场景示例** #### **场景 1:清理 CSV 文件** ```bash # 删除 CSV 每行的首尾空格,并压缩中间空格 awk -F, '{for(i=1;i<=NF;i++) gsub(/^[ \t]+|[ \t]+$/, "", $i)}1' OFS=, input.csv > cleaned.csv ``` #### **场景 2:提取无空格的字符串** ```bash echo " abc 123 " | tr -d ' ' # 输出: abc123 ``` --- ### **注意事项** 1. **备份文件**:直接修改文件前建议备份(例如 `cp input.txt input.txt.bak`)。 2. **正则表达式**: - `\s` 可以匹配所有空白字符(包括空格、制表符、换行符),但某些工具(如 `sed`)可能需要使用 `[[:space:]]`。 3. **工具差异**: - `tr` 只能处理单字符替换,`sed` 和 `awk` 更灵活。 - macOS 的 `sed` 和 Linux 的 `sed` 可能有差异(如 `-i` 参数需要指定备份后缀)。 根据实际需求选择合适的命令即可!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值