新聞中心
在Linux系統(tǒng)中,用戶可能需要在文件中插入一列數(shù)據(jù),以便更好地進(jìn)行查看和分析。幸運(yùn)的是,Linux提供了各種方法來(lái)方便地在文件中插入一列。本文將介紹幾種最常用的方法。

目前成都創(chuàng)新互聯(lián)公司已為數(shù)千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、太子河網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
方法一:使用awk命令
awk是一種用于文本處理和數(shù)據(jù)分析的強(qiáng)大工具,可以用來(lái)添加、刪除、編輯和輸出文件中的行和列。下面是一個(gè)在文件中插入一列的示例:
假設(shè)有一個(gè)名為“data.txt”的文件,其中包含兩列數(shù)據(jù),分別是“姓名”和“分?jǐn)?shù)”?,F(xiàn)在,我們想在文件中添加一列“學(xué)號(hào)”。
我們需要?jiǎng)?chuàng)建一個(gè)包含學(xué)號(hào)數(shù)據(jù)的文本文件“id.txt”。然后,我們可以使用以下命令將“學(xué)號(hào)”列插入到“data.txt”文件中:
“`
awk ‘NR==FNR{a[FNR]=$1;next}{print $0,a[FNR]}’ id.txt data.txt > newdata.txt
“`
其中,“NR==FNR”用于確定哪個(gè)文件是學(xué)號(hào)文件,a[FNR]表示在“id.txt”中的第FNR行(即學(xué)號(hào)文件的行號(hào))中提取該行的之一個(gè)字段,然后將其插入到“data.txt”中,最后將結(jié)果存儲(chǔ)在新文件“newdata.txt”中。
方法二:使用sed命令
sed是一種流編輯器,用于文本處理和文件編輯。它可以用來(lái)插入或刪除行、列或任何其他類(lèi)型的文本。下面是一個(gè)在文件中插入一列的示例:
假設(shè)我們有一個(gè)包含兩列數(shù)據(jù)的文件“file.txt”,我們想在文件中添加一個(gè)新列,表示每行數(shù)據(jù)的行號(hào)。我們可以使用以下命令:
“`
sed -e ‘s/^/1,/’ file.txt > newfile.txt
“`
其中,“s/^/1,/”表示將每行數(shù)據(jù)的開(kāi)頭替換為“1,”,然后將結(jié)果存儲(chǔ)在新文件“newfile.txt”中。
方法三:使用paste命令
paste是一種將兩個(gè)或多個(gè)文件合并成一個(gè)文件的命令??梢允褂盟鼘蓚€(gè)文件的各個(gè)行合并成一個(gè)文件,也可以使用它將兩個(gè)文件的各個(gè)列合并到一個(gè)文件中。下面是一個(gè)在文件中插入一列的示例:
假設(shè)我們有兩個(gè)文件,一個(gè)文件“file1.txt”包含兩列數(shù)據(jù),另一個(gè)文件“file2.txt”包含一列數(shù)據(jù)。我們想在“file1.txt”文件中添加一個(gè)新列,表示“file2.txt”文件中的每個(gè)相對(duì)應(yīng)的值。我們可以使用以下命令:
“`
paste -d ‘,’ file1.txt file2.txt > newfile.txt
“`
其中,“-d ‘,’”表示用“,”作為分隔符,將“file1.txt”和“file2.txt”文件中的各個(gè)列逐一合并,并將結(jié)果存儲(chǔ)在新文件“newfile.txt”中。
方法四:使用sql語(yǔ)句
如果您更熟悉SQL或有經(jīng)驗(yàn),則可以使用SQL命令來(lái)添加列。SQLite是一種輕量級(jí)的數(shù)據(jù)庫(kù),可以用于處理文本文件。我們可以使用以下命令來(lái)創(chuàng)建SQLite數(shù)據(jù)庫(kù)和表,并將文件中的數(shù)據(jù)導(dǎo)入到表中:
“`
sqlite3 mydb.sqlite
create table mytable (name, score);
.separator ‘,’
.import data.txt mytable
“`
“mydb.sqlite”是使用sqlite3創(chuàng)建的SQLite數(shù)據(jù)庫(kù),“mytable”是數(shù)據(jù)庫(kù)中的表名,“name”和“score”是表中列的名稱,“data.txt”是包含數(shù)據(jù)的文件。然后,我們可以使用以下SQL命令向表中添加一個(gè)新列“id”:
“`
alter table mytable add column id integer;
update mytable set id=rowid;
.output newdata.txt
select * from mytable;
“`
“id”是新列的名稱,“integer”是列的數(shù)據(jù)類(lèi)型,“rowid”是SQLite中的特殊列名,返回某一行在表中的唯一標(biāo)識(shí)符。之一條命令用于添加新列,“update”命令用于在新列中插入行號(hào),“output”命令用于將結(jié)果存儲(chǔ)在新文件“newdata.txt”中,最后的“select”命令用于顯示整張表格。
結(jié)論
在Linux中插入一列到文件中的方法有很多種,每種方法有各自的優(yōu)點(diǎn)和適合的場(chǎng)景。無(wú)論是awk、sed、paste還是sql命令,選擇哪種方法取決于個(gè)人偏好和經(jīng)驗(yàn),以及文件本身的格式和大小等因素。在實(shí)踐中,建議嘗試不同的方法,并根據(jù)需要進(jìn)行微調(diào)和改進(jìn)。
相關(guān)問(wèn)題拓展閱讀:
- linux小技巧
linux小技巧
進(jìn)入vi的命令vi filename :打開(kāi)或新建文件
vi +n filename :打開(kāi)文件,并將光標(biāo)置于第n行首
vi + filename :打開(kāi)文件,并將光標(biāo)置于最后一行首
vi +/pattern filename:打開(kāi)文件,并將光標(biāo)置于之一個(gè)與pattern匹配的串處
vi -r filename :在上次正用vi編輯時(shí)發(fā)生系統(tǒng)崩潰,恢復(fù)filename
一。命令模式1.光標(biāo)移動(dòng)
k或ctrl+p 上
j或Ctrl+n 下
h或Backspace 左
l或space 右
0 行首
$ 行末
G或GG 到最后一行
gg 到之一行
Enter :光標(biāo)下移一行
b或B 光標(biāo)左移一個(gè)字至字首
e或E 光標(biāo)右移一個(gè)字j至字尾
nG 光標(biāo)移至第n行首
n+ 光標(biāo)下移n行
n- 光標(biāo)上移n行(按-時(shí)不需要按shift)
H 光標(biāo)移至屏幕頂行
M 光標(biāo)移至屏幕中間行
L 光標(biāo)移至屏幕最后行
2.替換
r 替換 eg: rt , 10 r 03.刪除
x 以字符刪除
nx 刪除n個(gè)字符
dd 行刪除
ndd 刪除n行
dG 刪除光標(biāo)所在位置以下的內(nèi)容(包括光標(biāo)所在的行)
u 撤消
J 將光標(biāo)所在行和光標(biāo)以下的行合并4.復(fù)制粘貼
yy復(fù)制
nyy
p粘貼到光標(biāo)下邊
P粘貼到光標(biāo)上邊5.退出
ZZ保存退出
ZQ不保存退出6.查找
/ 正向查找
? 反向查找
n 繼續(xù)查找
二。編輯模式(插入模式)i 左插入
a 右插入
o 下起一行插入I 行首插入
A 行末插入
O 上起一行插入
三。底行模式(末行模式)1.讀取文件
r 把另外一個(gè)文件讀取到當(dāng)前文件中來(lái) eg: r /etc/passwd2.替換
s 替換 語(yǔ)法: n1,n2s/*/$/gc3.保存退出
n1,n2 w 路徑 將n1到n2行另存為
w 保存
wq 保存退出
q 不保存退出
wq! 強(qiáng)制性保存退出set number 顯示行號(hào)
set nonumber
set ignorance 在搜索中忽略大小寫(xiě)vi參數(shù)
-o 橫屏
-O 豎屏
現(xiàn)在在redhat的linux系統(tǒng)中已經(jīng)不再用vi了,而是用vim,下面是vi和vim的區(qū)別,但是vim完全兼容vi
Vi與Vim的區(qū)別
VIM 是 Unix 世界里極為普遍的全屏幕文書(shū)編輯器,幾乎可以說(shuō)任何一臺(tái) Unix 機(jī)器都會(huì)提供這套軟體。熟悉 DOS 下的文書(shū)處理後,也許會(huì)感到 VIM 并不好用;Unix 上也已經(jīng)發(fā)展出許多更新、更好用的文書(shū)編輯器,但是并不一定每一臺(tái) Unix 機(jī)器上都會(huì)安裝這些額外的軟體。所以,學(xué)習(xí) VIM 的基本操作還是有好處,讓你在各個(gè)不同的機(jī)器上得心應(yīng)手。vi是unix的標(biāo)準(zhǔn)配置,一般默認(rèn)都安裝了;而vim是vi的一個(gè)提升版本,當(dāng)然現(xiàn)在已經(jīng)獨(dú)立于vi,而且功能比vi要強(qiáng)大。 簡(jiǎn)單點(diǎn)來(lái)說(shuō),它們都是多模式編輯器,
不同的是vim 是vi的升級(jí)版本,它不僅兼容vi的所有指令,
而且還有一些新的特性在里面。
vim的這些優(yōu)勢(shì)主要體現(xiàn)在以下幾個(gè)方?jīng)]畝廳面:1、多級(jí)撤消
我們知道在vi里,按u只能撤消上次命令,而在vim里可以無(wú)限制的枯隱撤消。2、易用性
vi只能運(yùn)行于unix類(lèi)中,而vim不僅可以運(yùn)行于unix,windows ,mac等多操作平臺(tái)。3、語(yǔ)法加亮
vim可以用不同的顏色來(lái)加亮你的代碼。4、可視化操作
就是說(shuō)vim不僅可以在終端運(yùn)行,也可耐穗以運(yùn)行于x window、 mac os、 windows。5、對(duì)vi的完全兼容
某些情況下,你可以把vim當(dāng)成vi來(lái)使用。
我有vim的,都是自己平時(shí)用的時(shí)候積累的,現(xiàn)在之一次放出。
1 2 啟動(dòng)Vim時(shí)的選項(xiàng) vim -c cmd file: 在打開(kāi)文件前,先執(zhí)行指定的命令;vim -r file: 恢復(fù)上次異常退出的文件;vim -R file: 以只讀的方式打開(kāi)文件;vim -y num file: 將編輯窗口的大小設(shè)為num行;vim + file: 從文件的末尾開(kāi)始;vim +num file: 從第num行開(kāi)始;
Contents 2 3 光標(biāo)的移動(dòng) h: 左移一個(gè)字符;l: 右移一個(gè)字符;j: 下移一個(gè)字符;k: 上移一個(gè)字符;w: 前移一個(gè)單詞,光標(biāo)停在下一個(gè)單詞開(kāi)頭;e: 前移一個(gè)單詞,光標(biāo)停在下一個(gè)單詞末尾;b: 后移一個(gè)單詞,光標(biāo)停在上一個(gè)單詞開(kāi)頭;ge: 后移一個(gè)單詞,光標(biāo)停在上一個(gè)單詞末尾;fc: 把光標(biāo)移到同一行的下一個(gè)c字符處上面的操作都可以配合n使用,比如在正常模式(下面會(huì)講到)下輸入3h,則光標(biāo)向左移動(dòng)3個(gè)字符。
0或^:移動(dòng)到行首。$: 移動(dòng)到行尾。gg: 到文件頭部。G: 到文件尾部。nG: 到文件第n行。:n 移動(dòng)到第n行。:$ 移動(dòng)到最后一行。n|: 把光標(biāo)移到遞n列上。+或Enter:把光標(biāo)移至下一行態(tài)悔之一個(gè)非空白字符。-: 把光標(biāo)移至上一行之一個(gè)非空白字符。H: 把光標(biāo)移到屏幕最頂端一行。L: 把光標(biāo)移到屏幕更底端一行。ctrl+f: 下翻一屏。ctrl+b: 上翻一屏。ctrl+d: 下翻半屏。ctrl+u: 上翻半屏。Contents 3 4 Vim的幾種模式 正常模式:可以使用快捷鍵命令,或按:輸入命令行。插入模式:可以輸入文本,在正常模式下,按i、a、o等都可以進(jìn)入插入模式。可視模式:正常模式下按v可以進(jìn)入可視模式,在可視模式下,移動(dòng)光標(biāo)可以選擇文本。塊選擇模式:正常模式下按ctrl+v進(jìn)入。替換模式:正常模式下,按R進(jìn)入。Contents 4 5 插入 i: 在光標(biāo)前插入;I: 在當(dāng)前行最前插入;a: 在光標(biāo)后插入;A: 在當(dāng)前行最后插入;o: 在下面新建一行插入;O: 在上面新建一行插入;:r filename 在當(dāng)前位置插入另一個(gè)文件的內(nèi)容。:r !date 在光標(biāo)處插入當(dāng)前日期與時(shí)間。同理,:r!command可以將其它shell命令的輸出插入當(dāng)前文檔。Contents 5 6 改寫(xiě) cw: 改寫(xiě)光標(biāo)后1(n)個(gè)詞。cl: 改寫(xiě)光標(biāo)后n個(gè)字母。ch: 改帆猜正寫(xiě)光標(biāo)前n個(gè)字母。cc: 修改當(dāng)前行。s: 以輸入的文本替代光標(biāo)之后1(n)個(gè)字符,相當(dāng)于cl。S: 刪除指定數(shù)目的行,并以所輸入文本代替之。注意,類(lèi)似cnw,dnw,ynw的形式同樣可以寫(xiě)為ncw,ndw,nyw。Contents 6 7 替換 r: 替換光標(biāo)處的字符,同樣支持漢字。R: 進(jìn)入替換模式,按esc回到正常模式。Contents 7 8 撤消與重做 u: 取消一(n)個(gè)改動(dòng)。ctrl + r: 重做最后的改動(dòng)。U: 取消當(dāng)前行中所有的改動(dòng)。Contents 8 9 剪切和復(fù)制、粘貼 x: 剪切光標(biāo)右邊n個(gè)字符,相當(dāng)于dl。X: 剪切光標(biāo)左邊n個(gè)字符,相當(dāng)于dh。y: 復(fù)制在可視模式下選中的文本。yy or Y: 復(fù)制整行文本。 yy 是復(fù)制一行文本的命令,則5yy 表示復(fù)制兆中從前行開(kāi)始的5行yw: 復(fù)制一(n)個(gè)詞。yl: 復(fù)制光標(biāo)右邊1(n)個(gè)字符。yh: 復(fù)制光標(biāo)左邊1(n)個(gè)字符。y$: 從光標(biāo)當(dāng)前位置復(fù)制到行尾。y0: 從光標(biāo)當(dāng)前位置復(fù)制到行首。:m,ny 復(fù)制m行到n行的內(nèi)容。y1G或ygg:復(fù)制光標(biāo)以上的所有行。yG: 復(fù)制光標(biāo)以下的所有行。d: 刪除(剪切)在可視模式下選中的文本。d$ or D: 刪除(剪切)當(dāng)前位置到行尾的內(nèi)容。dw: 刪除(剪切)1(n)個(gè)單詞dl: 刪除(剪切)光標(biāo)右邊1(n)個(gè)字符。dh: 刪除(剪切)光標(biāo)左邊1(n)個(gè)字符。d0: 刪除(剪切)當(dāng)前位置到行首的內(nèi)容 dd: 刪除(剪切)1(n)行。:m,nd 剪切m行到n行的內(nèi)容。d1G或dgg:剪切光標(biāo)以上的所有行。dG: 剪切光標(biāo)以下的所有行。p: 在光標(biāo)之后粘貼。P: 在光標(biāo)之前粘貼。Contents 9 10 查找和替換 /something: 在后面的文本中查找something。?something: 在前面的文本中查找something。n: 向后查找下一個(gè)。N: 向前查找下一個(gè)。:s/old/new: 用new替換當(dāng)前行之一個(gè)old。:s/old/new/g: 用new替換當(dāng)前行所有的old。:n1,n2s/old/new/g: 用new替換文件n1行到n2行所有的old。:%s/old/new/g: 用new替換文件中所有的old。:%s/^/xxx/g: 在每一行的行首插入xxx,^表示行首。:%s/$/xxx/g: 在每一行的行尾插入xxx,^表示行尾。所有替換命令末尾加上c,每個(gè)替換都將需要用戶確認(rèn)。如:%s/old/new/gc%: 找到對(duì)應(yīng)的(;光標(biāo)所在行會(huì)縮進(jìn)。如果先按了n,再按兩下>;,光標(biāo)以下的n行會(huì)縮進(jìn)。對(duì)應(yīng)的,按兩下ctrl+w H(L,K,J): 將當(dāng)前窗口移動(dòng)到最左(右、上、下)面。正因?yàn)関im強(qiáng)大的分屏功能,我們可以把vim打造成功能強(qiáng)大的IDE。Contents一次編輯多個(gè)文件 我們可以一次打開(kāi)多個(gè)文件,如vi a.txt b.txt c.txt 使用:next(:n)編輯下一個(gè)文件。使用:previous編輯上一個(gè)文件。使用:wnext,保存當(dāng)前文件,并編輯下一個(gè)文件。使用:wprevious,保存當(dāng)前文件,并編輯上一個(gè)文件。使用:args顯示文件列表。Contents文件的編碼 :e ++enc=utf8 filename, 讓vim用utf-8的編碼打開(kāi)這個(gè)文件。:w ++enc=gbk,不管當(dāng)前文件什么編碼,把它轉(zhuǎn)存成gbk編碼。:set fenc或:setfileencoding,查看當(dāng)前文件的編碼。在vimrc中添加setfileencoding=utf-8,cp936,ucs-bom,vim會(huì)根據(jù)要打開(kāi)的文件選擇合適的編碼。注意:編碼之間不要留空格。cp936對(duì)應(yīng)于gbk編碼。ucs-bom對(duì)應(yīng)于windows下的文件格式。讓vim正確處理文件格式和文件編碼,有賴于~/.vimrc的正確配置。Contents執(zhí)行命令 :! cmd 執(zhí)行外部命令。:!! 執(zhí)行上一次的外部命令。@: 重復(fù)上一次的冒號(hào)命令。:sh 調(diào)用shell,用exit返回vim。:r !cmd 將命令的返回結(jié)果插入文件當(dāng)前位置。:m,nw !cmd 將文件的m行到n行之間的內(nèi)容做為命令輸入執(zhí)行命令。Contents一些快捷鍵(收集中) K: 打開(kāi)光標(biāo)所在詞的manpage。*: 向下搜索光標(biāo)所在詞。#: 向上搜索光標(biāo)所在詞。~: 反轉(zhuǎn)光標(biāo)所在字符的大小寫(xiě)。%: 移動(dòng)到匹配的(),{}或上。 Contents 18 19.多行縮進(jìn)
按v進(jìn)入visual狀態(tài),選擇多行,用>或q
Execute a macro: @
Contents 20 如何快速?gòu)恼膹?fù)制一段字符到Vim命令行?
先 yank
然后 ctrl+r ”
詳見(jiàn) :help :
Contents 21 shell 下匹配中文的搜索
:vimgrep //g /app/www/gamelive/default.sdo.com/public/api/**/*.php
//把^去掉則匹配任意英文字符(非中文字符)
:cnext (:cn)
:cprevious (:cp)
:cwindow (:cw)
比如命令:
:vimgrep /an error/ *.c
就是在所有的.c文件中搜索an error。
:vimgrep/an error/*
意思是查找當(dāng)前目錄下的文件中的an error,不包括子目錄
:vimgrep/an error/**
查找當(dāng)前目錄并且包括遞歸子目錄下的所有文件
:vimgrep/an error/**/*.php
查找當(dāng)前目錄并且包括遞歸子目錄下的所有PHP
vimgrep會(huì)產(chǎn)生一個(gè)error list,其實(shí)就是搜索結(jié)果列表。并會(huì)打開(kāi)之一個(gè)符合的文件中之一個(gè)符合的位置。
Contents 22 以16進(jìn)制編輯 首先,打開(kāi)二進(jìn)制文件時(shí)要加參數(shù)”-b”,不然會(huì)報(bào)文件之一行錯(cuò)誤.
$vim -b tuxcmd
打開(kāi)文件后,默認(rèn)是文本格式的,我們用”:%!xxd”可以切換到十六進(jìn)制編輯.
:%!xxd
是不是和utaredit很像呀?還可以加上參數(shù)-c來(lái)設(shè)置每行顯示多少字節(jié),比方用”:%!xxd -c 16″,就會(huì)顯示成16字節(jié)一行.
如果用”:%!od”命令,則會(huì)隱藏左側(cè)的文本列.
不過(guò),有一點(diǎn)不爽的就是改變文本列,不會(huì)改變16進(jìn)制里的數(shù)據(jù),只能手動(dòng)在16進(jìn)制列做修改.在文本列里的修改是不會(huì)生效的.
注意:修改完成后,不要保存,要再用”:%!xxd -r”切換成文本狀態(tài)格式再保存.
:%!xxd -r
匹配括號(hào)匹配:
% 可以讓光標(biāo)從它當(dāng)前所在的括號(hào)跳轉(zhuǎn)到與它相匹配的括號(hào)上去, 對(duì)花括號(hào)和
圓括號(hào), 方括號(hào)都有效, 常用于手工檢查括號(hào)是否匹對(duì).
緩沖文件切換:
map :bp ” right arrow (normal mode) switches buffers (excluding minibuf)
“map :TlistToggle
“map :bn ” right arrow (normal mode) switches buffers (excluding minibuf)
“map :bp ” left arrow (normal mode) switches buffers (excluding minibuf)
其實(shí)你說(shuō)的沒(méi)錯(cuò),linux需要細(xì)心,可是你如閉棚納果是去看別人的,那永遠(yuǎn)是別人轎沒(méi)注意的到問(wèn)題,而不是你的。還不如自己去做,出了問(wèn)題去百度或者問(wèn)人。和冊(cè)這樣比問(wèn)一些技巧有用多了。
關(guān)于linux 文件插入一列的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都創(chuàng)新互聯(lián)科技有限公司,是一家專(zhuān)注于互聯(lián)網(wǎng)、IDC服務(wù)、應(yīng)用軟件開(kāi)發(fā)、網(wǎng)站建設(shè)推廣的公司,為客戶提供互聯(lián)網(wǎng)基礎(chǔ)服務(wù)!
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡(jiǎn)單好用,價(jià)格厚道的香港/美國(guó)云服務(wù)器和獨(dú)立服務(wù)器。創(chuàng)新互聯(lián)成都老牌IDC服務(wù)商,專(zhuān)注四川成都IDC機(jī)房服務(wù)器托管/機(jī)柜租用。為您精選優(yōu)質(zhì)idc數(shù)據(jù)中心機(jī)房租用、服務(wù)器托管、機(jī)柜租賃、大帶寬租用,可選線路電信、移動(dòng)、聯(lián)通等。
新聞名稱:Linux中如何在文件中插入一列?(linux文件插入一列)
網(wǎng)頁(yè)路徑:http://m.fisionsoft.com.cn/article/cdjcggj.html


咨詢
建站咨詢
