2012-07-07 36 views
14

當我使用終端找到每一個已經在過去的24小時工作我得到這樣的行的文本文件的工作:如何將標籤放入終端的文本文件中?

ABC 12345工作曾任職於DATE

DEF 67890 DATE的另一個工作

GHI 10112對DATE

最終招聘這個文本文件可以達到幾百行。我必須將所有這些數據插入到Microsoft Excel中的表格中。爲了讓我的生活更輕鬆,我想弄清楚如何在數字後面的每一行添加一個製表符。

事情是這樣的:

echo "ABC 12345 <tab> Job Worked on DATE" >> jobs.txt 
echo "DEF 67890 <tab> Another Job on DATE" >> jobs.txt 
echo "GHI 10112 <tab> Final Job on DATE" >> jobs.txt 

我將如何實現這一目標?

+0

你可能不想要周圍的空間e製表符。 – 2012-07-07 21:24:19

+0

它不需要是製表符,在MS Excel中,您可以選擇用於導入的分隔符,您可以選擇可見的內容,如','或';'只需用這些字符編輯文件即可。 – pizza 2012-07-07 22:32:35

回答

32

將echo -e與\ t用於製表符。就像這樣:

echo -e "ABC 12345 \t Job Worked on DATE" >> jobs.txt 
+1

-e標誌是做什麼的?當我回聲時,它只會給我一個-n標誌。 – W3Geek 2012-07-07 21:22:04

+2

@ W3Geek:這取決於你正在使用哪個版本的echo。 bash的內置'echo'命令識別'-e',它可以解釋某些反斜線轉義的字符,包括'\ t'標籤。但並不是所有'echo'版本都這樣做。 'printf'命令是一個更好的選擇 - 但是假設你已經有了文本信息,使用'sed','awk'或者類似的東西來轉換它會更好。 – 2012-07-07 21:26:41

+0

好的,我看到-e標誌是如何工作的。 =)然而,它並沒有出現在我的'人的回聲'中。我不明白sed或awk命令的作用。 – W3Geek 2012-07-07 21:31:21

5

可以按CTRL-V標籤鍵入原始標籤。


您還可以使用$'...' C-字符串語法:

echo $'ABC 12345 \t Job Worked on DATE' >> jobs.txt 
+1

是的,但是由於OP將所有數據都作爲文本進行轉換,只需要對其進行轉換,重新輸入它不會是最好的方法。 – 2012-07-07 21:27:40

+0

你是對的@KeithThompson。這不是我正在做的最好的方法。我選擇了上面的帖子是因爲他是最簡單的方法。 – W3Geek 2012-07-08 19:25:20

1

附加一個標籤,第二場:

awk '{$2 = $2 "\t"; print}' inputfile > outputfile 

類似,但使用正則表達式:

sed 's/[[:digit:]]\+/&\t/' inputfile > outputfile 
+0

'awk'和'sed'命令是做什麼的? – W3Geek 2012-07-07 21:26:56

+0

@ W3Geek:它們都是文本轉換過濾器。特別是'awk'是一種全面的編程語言(可以說sed'也是)。在評論中完全解釋它們是不可能的。如果你的系統有'man'命令,或者進行Google或維基百科搜索,請嘗試'man sed'和/或'man awk'。 – 2012-07-07 21:29:34

+0

'sed'命令不起作用,至少不適合我(GNU sed 4.2.1)。 'sed'默認無法識別擴展正則表達式(特別是'+'限定符)。如果是這樣,你的'/ /'命令將*替換*製表符的一個數字序列;你想*添加*製表符。 – 2012-07-07 21:32:49

相關問題