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指...