linux - 修改文件中的文本(百万列,制表符分隔)- 删除除第一个选项卡之外的所有选项卡并在最后一列后面添加新列

标签 linux perl unix sed awk

在这里,我希望得到您对文本文件修改的帮助。

我想修改文件中的文本(数百万列,制表符分隔)- 删除除第一个制表符之外的所有制表符并在最后一列后面添加新列。

  • 文件(这里有 4 列,但是 我的真实文件中有数百万列, 制表符分隔)我现在有:

    day1 1 3 7
    day7 2 4 8
    day3 2 5 6
    
  • 我要的文件,去掉分隔符 (从第二个开始),并添加三个 新列(一个与 第一个,另外两个相同 所有同一列中的值,这里是 x 和 y)。

    day1 137 day1 x y
    day7 248 day7 x y
    day3 256 day3 x y
    

我打算使用 awk 和 sed 来做到这一点。但是,我尝试了很多不同的方法,我仍然不知道该怎么做。

你能帮我什么忙吗?提前致谢。

最好的,

最佳答案

使用 gawk -f script.awk < input > output其中 script.awk包含:

{
    old=$1;
    $0 = substr($0, length($1)+1);
    gsub(/[[:space:]]*/, "", $0);
    print old, $0, old, "x", "y";
} 

查看现场演示 here (谢谢你 belisarius 给我看这个网站)

关于linux - 修改文件中的文本(百万列,制表符分隔)- 删除除第一个选项卡之外的所有选项卡并在最后一列后面添加新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6355349/

相关文章:

linux - bash online - 如何退出 flow -ing 输出

java - 无法在 PHP 中使用 shell_exec() 传递 STDIN

mysql - Perl fetchrow_hashref 结果是不同的整数值与字符串值

perl - 在 Perl 中,如何将二进制字符串转换为整数?

unix - 如何在 ksh 中创建一个 0 字节的文件。

bash - 替换文件中的列但保持空格格式

c++ - 为什么此 C++ 成员函数调用会因段错误而失败?

linux - 如何读取 CGI Bash 脚本中的 HTTP header 值

string - 在 Perl 中,为什么 utf-8 字符串在拆分为字符时打印的不同?

regex - 如何使用 bash 脚本和 sed 将字符串替换为换行符?