5

ファイル a.txt の最後に 2 つの空白行があります

[yaxin@oishi tmp]$ cat -n a.txt 
     1  jhasdfj
     2  
     3  sdfjalskdf
     4  
     5  

私のスクリプトは次のとおりです。

[yaxin@oishi tmp]$ cat t.sh 
#!/bin/sh
a=`cat a.txt`
a_length=`echo "$a" | awk 'END {print NR}'`
echo "$a"
echo $a_length


[yaxin@oishi tmp]$ sh t.sh 
jhasdfj

sdfjalskdf
3

デバッグを開く

[yaxin@oishi tmp]$ sh -x t.sh 
++ cat a.txt
+ a='jhasdfj

sdfjalskdf'
++ echo 'jhasdfj

sdfjalskdf'
++ awk 'END {print NR}'
+ a_length=3
+ echo 'jhasdfj

sdfjalskdf'
jhasdfj

sdfjalskdf
+ echo 3
3

cat コマンドは、ファイルの末尾にある空白行を盗みます。この問題の解決方法。

4

2 に答える 2

3

このcatコマンドは何も盗みません。それを行うのはコマンド置換です。man bash言います:

Bash は、コマンドを実行し、コマンド置換をコマンドの標準出力に置き換え、末尾の改行を削除することによって展開を実行します。埋め込まれた改行は削除されません

コマンドの出力を変数に保存する場合は、コマンドの&& echo .後に を追加し、出力を保存して最後の..

また、ファイル内の行数をカウントするには、標準的な方法で次を実行しますwc -l

wc -l < a.txt
于 2013-08-14T08:29:28.003 に答える