如何在文件的特定列中添加非空格的字符串。
猫文件.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
运行:
并创建了备份:
sed -i.bak -E 's/([[:alpha:]]*)/\1 \ttest/g' data.txt
重定向到另一个文件:
sed -E 's/([[:alpha:]]*)/\1 \ttest/g' data.txt > result.txt
结果:
abc test
defg test
xy test
信息:
([[:alpha:]])
:捕获字母\1 \ttest
:返回捕获的组并添加tab
和单词test
-E
:扩展正则表达式选项以实现可移植性。