shell指令碼如何在相同內容行後新增上a b c加以區

時間 2022-02-01 19:25:50

1樓:

先假設重複的相同行個數不會超過a-z字母表示的範圍,且檔名為a.txt:

#!/bin/sh

myfile=a.txt #改為你自己的檔名

for record in `sort $myfile | uniq -d`

doawk 'begin  else print}' $myfile >tmp

mv tmp $myfile

done

sort $myfile | uniq -d 找出檔案中所有重複的行。

a的ascii碼十進位制表示為65,所以n從65開始計數。

shell程式設計,把a檔案的每一行追加到b檔案對應行數的行尾

2樓:匿名使用者

#!/bin/bash

line=`sed -n '$=' sqlli.txt`

#echo $line

for((n=1;n<=$line;n++))

dovalue=`sed -n $p sqlli.txt`

#sed -n "$s/$/$value/p" jsp.logg >> test   #如果不想改jsp檔案內容,把結果放test中,使用追加》是避免每次被清空,執行後只有最後一行值

sed -i "$s/$/$value/" jsp.logg       #如果直接改檔案內容,不用重定向

done

錯誤:1.迴圈條件錯誤。1~3行,實際只能執行1~2行

2.變數的使用,如$ns,程式會以為ns是乙個新的變數。

3.head -n,會返回前幾行,不是第幾行

4. sed -i   不管處理成功與否,螢幕沒有顯示內容,把命令重定向到檔案,得不到結果

5.在迴圈中重定向檔案》,會導致每次先清空檔案,即使有數值,也只有最後乙個迴圈時的值

怎麼在檔案中每行後面新增行數號(shell命令)

3樓:

用awk,一條命令就可以搞定:

awk '' file.txt >result.txt其中,$0表示當前處理的檔案行內容,fnr表示當前處理的檔案行行號。

結果存在result.txt中。

為拓展思路,下面用乙個不同的方法:

用sed得到每行行號,存入乙個tmp檔案,然後用paste合併這兩個行數相同的檔案就得到了。

假設你的原始檔名稱為file.txt。

#!/bin/sh

sed -n '=' file.txt >tmppaste file.txt tmp >result.txtrm -f tmp

4樓:

1、awk比較簡單,就像樓上寫的那樣

2、sed有點複雜,以下是sed:

sed '=' test2 |sed -n 'h;n;g;s/\n/ /p;'

注釋:1、首先利用=給每行前插入一行行號

2、利用h,將奇數行(行號)複製到保持空間,然後n將偶數行放到模式空間,之後g將奇數行從保持空間轉移至模式空間後,因為複製行的時候帶的有\n(換行符),故用s將換行符替換為空格,最終模式空間的內容就是「偶數行 奇數行」然後p輸出出來

5樓:匿名使用者

#!/bin/bash

a=1while read line

doecho $line" "$a

a=`expr $a + 1`

done<$1

以上**存成test.sh

chmod +x test.sh

./test.sh 要修改的檔名

shell實現以下功能: 通過關鍵詞匹配到檔案某一行,並在這一行末尾追加內容。

6樓:

假設檔名是1.txt

cat 1.txt | grep bbbb | head -1 | awk 'print $1,$2,dddd'

sorry看錯了你的需求,上面的只是把你需要的那一行列印出來了,應該用sed來插入,也很簡單

sed -i 's/bbbb 1234/bbbb 1234 dddd/' 1.txt

7樓:紫夜梟雄

試了一下,可以搞

[root@room1pc01 data]# cat aaa.txtx

aaaa

bbbb 1234

bbbb 5678

cccc

[root@room1pc01 data]# str=`grep  bbbb aaa.txtx|head -1`;sed -i "/$str/s/$/ dddd/" aaa.txtx

[root@room1pc01 data]# cat aaa.txtx

aaaa

bbbb 1234 dddd

bbbb 5678

cccc

請問怎麼在shell指令碼中,替換檔案多行裡面的指定字串

如何在shell指令碼中執行cd命令

在工作中,網際網路公司,經常不是直接登入到服務上,而是通過跳板機進行中轉。這樣就會用到cd命令切換目錄。編輯shell檔案 vim switchdir.sh plain view plain copycd opt service mobile kafka 2.10 0.8.1 lizt bin so...

shell指令碼執行命令,如何執行shell指令碼?

編寫好的shell指令碼 如 test 可以採取兩種方式進行執行 一 sh test 一般不採用這種呼叫方式,尤其不採用 sh也可以採用 ksh test 這種方式要求shell具有 可讀 的訪問許可權。二 直接執行可執行的shell指令碼之前,首先應使用下列chmod命令,把shell指令碼檔案設...

Linux如何編寫shell指令碼

一般以 bin sh 開頭 不是必須要寫,但一定要單獨一行 指定執行這個指令碼的shell程式 也可以用 bin zsh或其他 然後就是堆命令了。linux的shell指令碼支援很多功能,加上linux高度模組化的命令,完全可以用shell指令碼寫出複雜的程式。以上只是簡單介紹如何開始寫shell指...