我想將標題添加到製表符分隔文件,但我不確定如何在Linux中的一行中執行此操作。將標題添加到製表符分隔文件
讓我們說我的文件是:
roger\t18\tcolumbia\tnew york\n
albert\t21\tdartmouth\tnew london\n
etc...
,現在我想添加一個頭,說:
name\tage\tuniversity\tcity
我會怎麼做,在Linux中一行?對於awk,sed,cat等,我確實不太熟悉perl。
我想將標題添加到製表符分隔文件,但我不確定如何在Linux中的一行中執行此操作。將標題添加到製表符分隔文件
讓我們說我的文件是:
roger\t18\tcolumbia\tnew york\n
albert\t21\tdartmouth\tnew london\n
etc...
,現在我想添加一個頭,說:
name\tage\tuniversity\tcity
我會怎麼做,在Linux中一行?對於awk,sed,cat等,我確實不太熟悉perl。
沒有像「追加」操作符>>
那樣的「前置」操作符,但可以將頭寫入臨時文件,然後將文件內容複製到臨時文件中,然後將其移回:
echo -e "name\tage\tuniversity\tcity" | cat - yourfile > /tmp/out && mv /tmp/out yourfile
這是一個很好的技術,但是如果貓要查看它的輸入,你需要'cat - yourfile'。 (也就是說,你必須明確地給出'-'作爲貓的參數。) –
@WilliamPursell你是絕對正確的 - 對我來說是錯字;謝謝你爲我抓到! – newfurniturey
首先創建與插頭內容的文件:
$ cat >header
name^Iage^Iuniversity^Icity (return)
^D
(其中^I
是tab鍵)
然後在前面加上它到數據
$ cat header myfile >newfile
$ mv newfile myfile
$ { printf 'name\tage\tuniversity\tcity\n'; cat orig-file; } > new-file
或者
$ printf '1\ni\nname\tage\tuniversity\tcity\n.\nw\n' | ed -s orig-file
就我個人而言,我會去與nano -w file.txt
;-)(即只使用文本編輯器,並不一定是當然的納米)
但是,如果你想做到這一點由於某種原因非交互式環境中,你可以使用cat
用於各種級聯的:
echo $'name\tage\tuniversity\tcity' | cat - file.txt > file2.txt
將預先標題並將輸出放入file2.txt
。如果要覆蓋原文件,你可以用
echo $'name\tage\tuniversity\tcity' | cat - file.txt > file2.txt; mv file{2,}.txt
做或者你可以使用sed
如下:
sed -i $'1 i\\\nname\tage\tuniversity\tcity' file.txt
請注意,我使用$'...'
引用,以允許我使用\t
來代表選項卡和\n
代表換行符(在其他替換中;請參閱bash手冊頁以獲取更多信息)。在這種引用的字符串中,\\
表示文字反斜槓。因此,傳遞給sed的程序實際上是
1 i\
name age university city
額外的Q,我將如何添加一個變量名到echo $'name \ tage \ tuniversity \ tcity'中? cat - file.txt> file2.txt。 I.e.,echo $'$ {shellvar} \ t $ {shellvar2} \ tuniversity \ tcity'| cat - file.txt> file2.txt。我那樣試過,根本沒有工作。 – Dnaiel
Shell變量只在雙引號內擴展,所以您將不得不混合引用樣式。幸運的是,bash允許你運行不同種類的引用字符串,並相應地加入它們。 '「$ {shellvar}」$'\ t'「$ {shellvar2}」$'\ tuniversity \ tcity'' –
不錯,非常感謝! – Dnaiel
perl -i -lne 'if($.==1){print "newline\n$_"}else{print}' your_file
cat <(head -1 theFileWithHeader) theFileWithoutHeader > newfile;
mv newfile theFileWithoutHeader;
這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 - [來自評論](/ review/low-quality-posts/17888664) – Sree
你問如何把文本/頭的線在文件的開始? – newfurniturey
是的。我可以看到你已經回覆。謝謝。 – Dnaiel