如何在文件中特定列中添加非空格的字符串

如何在文件中特定列中添加非空格的字符串

如何在文件的特定列中添加非空格的字符串。

猫文件.txt

abc
defg
xy

现在我想在 file.txt 的第 8 列添加字符串“test?”。但第 8 列不是空格,那么我该如何添加字符串?

它应该是 -

abc    test
defg   test
xy     test

谢谢

---维沙尔

答案1

看起来您想要在字段宽度为 8 的范围内左对齐打印第一个字段:

$ awk -v s=test '{printf "%-8s%s\n", $1, s}' file.txt
abc     test
defg    test
xy      test

答案2

paste使用、yes和 的相当快速和肮脏的解决方案head

paste file.txt <(yes test | head -n 3)
  • yes打印无数行test
  • head只获取前三行yes
  • <(...)将输出重定向...paste作为输入文件
  • paste将两个输入文件合并在一起

答案3

使用 sed 命令应该有助于解决这个问题:

sed -E 's/([[:alpha:]]*)/\1 \ttest/g' data.txt

运行:

  1. 并创建了备份:

    sed -i.bak -E 's/([[:alpha:]]*)/\1 \ttest/g' data.txt
    
  2. 重定向到另一个文件:

    sed -E 's/([[:alpha:]]*)/\1 \ttest/g' data.txt > result.txt
    

结果:

abc     test
defg    test
xy      test

信息:

  • ([[:alpha:]]):捕获字母
  • \1 \ttest:返回捕获的组并添加tab和单词test
  • -E:扩展正则表达式选项以实现可移植性。

相关内容