从第二列的开头删除空格
remove whitespace from beginning of second column
我有一个以空格分隔的文件,如下所示:
12 12.57428314.57490104 ENSG00000065361 rs2271194 rs61939899
2 2.198148577.198835577 ENSG00000065413 rs4524134 rs2697288 rs6738721
6 6.84279922.84407274 ENSG00000065609 rs2016358 rs35791305
10 10.104585135.104956335 ENSG00000065613 rs72811696
我想从第二列中删除前导空格(有两个空格分隔第 1 列和第 2 列,而不是一个空格)。有谁知道这方面的 sed 或 awk 命令吗?
有删减:
cut -d " " -f 1,3- file
输出:
12 12.57428314.57490104 ENSG00000065361 rs2271194 rs61939899
2 2.198148577.198835577 ENSG00000065413 rs4524134 rs2697288 rs6738721
6 6.84279922.84407274 ENSG00000065609 rs2016358 rs35791305
10 10.104585135.104956335 ENSG00000065613 rs72811696
tr -s
(或tr --squeeze-repeats
)将删除重复字符。所以你如果要替换所有重复的空格,你可以这样写:
tr -s ' ' < input-file > output-file
输入:
12 12.57428314.57490104 ENSG00000065361 rs2271194 rs61939899
2 2.198148577.198835577 ENSG00000065413 rs4524134 rs2697288 rs6738721
6 6.84279922.84407274 ENSG00000065609 rs2016358 rs35791305
10 10.104585135.104956335 ENSG00000065613 rs72811696
输出:
12.57428314.57490104 ENSG00000065361 rs2271194 rs61939899
2 2.198148577.198835577 ENSG00000065413 rs4524134 rs2697288 rs6738721
6 6.84279922.84407274 ENSG00000065609 rs2016358 rs35791305
10 10.104585135.104956335 ENSG00000065613 rs72811696
使用 GNU sed
,在第一列
后用单个 space 替换多个白色-space 字符
sed -E 's/^(\S+)\s+/ /' ip.txt
对于其他版本,使用
[[:space:]]
对于 \s
[^[:space:]]
对于 \S
或:blank:
(space和制表符)而不是:space:
(白色-space字符)
此 AWK 将所有出现的连续 space 替换为单个 space:
$ awk 'gsub(/ +/," ")' file
12 12.57428314.57490104 ENSG00000065361 rs2271194 rs61939899
2 2.198148577.198835577 ENSG00000065413 rs4524134 rs2697288 rs6738721
6 6.84279922.84407274 ENSG00000065609 rs2016358 rs35791305
10 10.104585135.104956335 ENSG00000065613 rs72811696
只需删除每行的第一个 space:
$ sed 's/ //' file
12 12.57428314.57490104 ENSG00000065361 rs2271194 rs61939899
2 2.198148577.198835577 ENSG00000065413 rs4524134 rs2697288 rs6738721
6 6.84279922.84407274 ENSG00000065609 rs2016358 rs35791305
10 10.104585135.104956335 ENSG00000065613 rs72811696
我有一个以空格分隔的文件,如下所示:
12 12.57428314.57490104 ENSG00000065361 rs2271194 rs61939899
2 2.198148577.198835577 ENSG00000065413 rs4524134 rs2697288 rs6738721
6 6.84279922.84407274 ENSG00000065609 rs2016358 rs35791305
10 10.104585135.104956335 ENSG00000065613 rs72811696
我想从第二列中删除前导空格(有两个空格分隔第 1 列和第 2 列,而不是一个空格)。有谁知道这方面的 sed 或 awk 命令吗?
有删减:
cut -d " " -f 1,3- file
输出:
12 12.57428314.57490104 ENSG00000065361 rs2271194 rs61939899 2 2.198148577.198835577 ENSG00000065413 rs4524134 rs2697288 rs6738721 6 6.84279922.84407274 ENSG00000065609 rs2016358 rs35791305 10 10.104585135.104956335 ENSG00000065613 rs72811696
tr -s
(或tr --squeeze-repeats
)将删除重复字符。所以你如果要替换所有重复的空格,你可以这样写:
tr -s ' ' < input-file > output-file
输入:
12 12.57428314.57490104 ENSG00000065361 rs2271194 rs61939899
2 2.198148577.198835577 ENSG00000065413 rs4524134 rs2697288 rs6738721
6 6.84279922.84407274 ENSG00000065609 rs2016358 rs35791305
10 10.104585135.104956335 ENSG00000065613 rs72811696
输出:
12.57428314.57490104 ENSG00000065361 rs2271194 rs61939899
2 2.198148577.198835577 ENSG00000065413 rs4524134 rs2697288 rs6738721
6 6.84279922.84407274 ENSG00000065609 rs2016358 rs35791305
10 10.104585135.104956335 ENSG00000065613 rs72811696
使用 GNU sed
,在第一列
sed -E 's/^(\S+)\s+/ /' ip.txt
对于其他版本,使用
[[:space:]]
对于\s
[^[:space:]]
对于\S
或:blank:
(space和制表符)而不是:space:
(白色-space字符)
此 AWK 将所有出现的连续 space 替换为单个 space:
$ awk 'gsub(/ +/," ")' file
12 12.57428314.57490104 ENSG00000065361 rs2271194 rs61939899
2 2.198148577.198835577 ENSG00000065413 rs4524134 rs2697288 rs6738721
6 6.84279922.84407274 ENSG00000065609 rs2016358 rs35791305
10 10.104585135.104956335 ENSG00000065613 rs72811696
只需删除每行的第一个 space:
$ sed 's/ //' file
12 12.57428314.57490104 ENSG00000065361 rs2271194 rs61939899
2 2.198148577.198835577 ENSG00000065413 rs4524134 rs2697288 rs6738721
6 6.84279922.84407274 ENSG00000065609 rs2016358 rs35791305
10 10.104585135.104956335 ENSG00000065613 rs72811696