use*_*own 33 linux bash text-manipulation
我有一些文本文件,其中包含一些由不同数量的空格分隔的列,但我需要一个单独的选项卡作为分隔符。可以在 Bash 中做吗?
Den*_*son 39
要将多个空格的序列转换为制表符,但单独保留单个空格:
sed 's/ \+ /\t/g' inputfile > outputfile
Run Code Online (Sandbox Code Playgroud)
要对多个文件执行此操作:
for inputfile in *
do
sed 's/ \+ /\t/g' "$inputfile" > tmpfile && mv tmpfile "$inputfile"
done
Run Code Online (Sandbox Code Playgroud)
或者
for inputfile in *
do
sed -i.bak 's/ \+ /\t/g' "$inputfile"
done
Run Code Online (Sandbox Code Playgroud)
或者
find . -type f -exec sed -i.bak 's/ \+ /\t/g' {} \;
Run Code Online (Sandbox Code Playgroud)
小智 8
如果您的角色是多个标签,您还可以使用tr -s:
-s, --squeeze-repeats replace each input sequence of a repeated character
that is listed in SET1 with a single occurrence
Run Code Online (Sandbox Code Playgroud)
例如:
my_file.txt | tr -s " "
Run Code Online (Sandbox Code Playgroud)
所有的空白都将合而为一。
您可以使用sed制表符替换多个空格。:
用一个制表符替换一个或多个空格的示例:
cat spaced-file | sed 's/ \+/\t/g' > tabbed-file
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
81297 次 |
| 最近记录: |