2013-08-27 51 views
2

我試圖顯示行號,只要charcter計數小於9.如果它小於9,那麼我想在行尾添加一個製表符。 然而,在sed命令中,我不在輸出中查看$行。

#!/usr/bin/sh 
#set -x 

while read line; do 
    count=`echo $line|wc -m` 
    if [ $count -lt 9 ] 
    then 
    sed -n '/$line/=' Length4.txt; 
    fi 
done < Length4.txt 

Length.txt

ABCD 
DEFG 
HFIJ 
KLMN 
+1

殼牌是一個從中調用工具環境。解析任意文本文件的工具是awk。您正在解析一個文本文件,所以只需使用awk,並且生成的腳本將更簡潔,更清晰且更健壯。發佈一些更具代表性的示例輸入(例如,某些包含9個或更多字符的行)以及給定該輸入的預期輸出。 –

回答

0

您需要爲變量擴展殼雙引號:

sed -n "/$line/=" Length4.txt 

但如果你描述你的問題,我們可以更好地幫助你清理一些代碼。

+0

謝謝。有用。但是我的要求稍微複雜一些。從(sed -n「/ $ line/=」Length4.txt)我會得到行號。這裏將顯示所有行。因爲所有行的字符數都小於9.所以我想通過在這些行的末尾添加一個更多的選項卡來更改這些行的值。 – user2642751

+0

你只是想在輸出中輸入'1 \ t \ n2 \ t \ n3 \ t \ n4 \ t \ n'嗎?你可以在這個循環後顯示你期望的文件內容。 – anubhava

+0

它將與length.txt相同,除了第1行到第4行的字符數應該是4 + 8(tab)= 12的字符數。我無法添加內容,因爲您無法識別差異。因爲選項卡將在每行結尾處存在。 – user2642751

0

這整個事情可以解決一點更容易awk

awk 'length($0) < 9 { print NR }' Length4.txt