刪除行尾的製表符 e

刪除行尾的製表符 e
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

它的作用是 take sub 函數,它刪除第一的出現該選項卡時,我們將該文字輸出到臨時文件,然後將這些內容帶回 file_a。在檔案之間切換的原因是:除非您使用允許內聯編輯的 awk 版本(我相信是 gnu awk),否則這在任何情況下都可以工作 - awk、mawk、nawk 等。

相關內容