printf "%s\t" HEMES n{1..1600} >file_a
sed -i 's/\t*$//' file_a > file_a
删除代码第一行(打印内容的位置)之后行尾的制表符。
我现在的问题是,我需要在包含更多行的较大文件中移除该行后面的制表符(以 HEMES 开头)。如果我只尝试 sed 行,则不起作用。我想要从中删除字符的行始终是文件的第一行。
答案1
不要将所有内容都放在一行中并输出到文件,而是将其分成两部分 - 输出 HEMES 字符串,然后附加 n{1...1600} 序列:printf "%s" HEMES > file_a; printf "%s\t" n{1..1600} >> file_a
。
如果您特别需要删除现有文件内 HEMES 和 n1 之间的标签,可以使用以下awk
解决方案:
awk ' {sub(/[[:blank:]]/,""); print} ' file_a > tmp_file && cat tmp_file > file_a
。
它的作用是获取子函数,删除第一的出现制表符时,我们将该文本输出到临时文件,然后将这些内容返回到 file_a。在文件之间切换的原因是:除非您使用的是允许内联编辑的 awk 版本(我相信是 gnu awk),否则这在任何情况下都会起作用 - awk、mawk、nawk 等。