首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在bash中复制多个文本文件的第一列

在bash中复制多个文本文件的第一列
EN

Stack Overflow用户
提问于 2020-12-04 20:53:30
回答 4查看 550关注 0票数 1

我有多个文本文件,每个文本文件包含两列,我希望在bash中复制每个文件中的第一列,最后有三列。

文件:

代码语言:javascript
复制
sP100227 1
sP100267 1
sP100291 1
sP100493 1

输出文件:

代码语言:javascript
复制
sP100227 sP100227 1
sP100267 sP100267 1
sP100291 sP100291 1
sP100493 sP100493 1

我试过:

代码语言:javascript
复制
txt=path/to/*.txt
echo "$(paste <(cut -f1-2 $txt) > "$txt"
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-12-04 21:00:51

cutpaste中的默认分隔符是TAB,但是您的文件看起来是空格分隔的。

您不能使用相同的文件作为输入和输出重定向,因为当shell打开输出文件时,它会截断它,所以程序没有什么可读取的。写入一个新文件,然后重命名它。

您的paste命令只有一个输入文件。没有必要使用echo

代码语言:javascript
复制
paste -d' ' <(cut -d' ' -f1 "$txt") "$txt" > "$txt.new" && mv "$txt.new" "$txt"

使用awk可以更容易地做到这一点。

代码语言:javascript
复制
awk '{print $1, $0}' "$txt" > "$txt.new" && mv "$txt.new" "$txt"

GNU awk有一个适当的扩展,所以如果您愿意的话可以使用它。请参阅Save modifications in place with awk

票数 2
EN

Stack Overflow用户

发布于 2020-12-04 20:57:02

你能试一下吗。用GNU awk中显示的示例编写并测试。这将将字段添加到只有2个字段的行中。

代码语言:javascript
复制
awk 'NF==2{$1=$1 OFS $1} 1' Input_file

如果您不关心字段的数量,只想拥有第一个字段的值2次,然后尝试如下。

代码语言:javascript
复制
awk '{$1=$1 OFS $1} 1' Input_file

或者,如果您的Input_file中只有两个字段,那么我们不需要重写完整的行,只需按如下方式打印它们。

代码语言:javascript
复制
awk '{print $1,$1,$2}' Input_file

若要将输出保存到相同的Input_file中,请为上述解决方案追加> temp && mv temp Input_file (测试后)。

票数 4
EN

Stack Overflow用户

发布于 2020-12-04 21:04:31

使用临时文件( cut -f1paste ),如下所示:

代码语言:javascript
复制
paste <(cut -f1 in_file) in_file > tmp_file
mv tmp_file in_file

或者,使用Perl一行程序,如下所示:

代码语言:javascript
复制
perl -i.bak -lane 'print join "\t", $F[0], $_;' in_file

Perl一行程序使用以下命令行标志:

-e:告诉Perl在行中查找代码,而不是在文件中。

-n:每次循环输入一行,默认情况下将其分配给$_

-l:在执行代码行之前,先去掉输入行分隔符(默认情况下是*NIX上的"\n"),然后在打印时追加它。

-a:在空格或在-F选项中指定的正则表达式上将$_拆分为数组@F

-i.bak:就地编辑输入文件(覆盖输入文件).在重写之前,将扩展名.bak附加到原始文件的备份副本中。

还请参见:

perldoc perlrun: how to execute the Perl interpreter: command line switches

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65150581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档