sed: -e 式 #1、文字 4: 不明なコマンド:

sed: -e 式 #1、文字 4: 不明なコマンド:

この答えが何を意味するのか教えてくれる人はいますか?

sed: -e expression #1, char 4: unknown command: `
'

以下を使用すると、これが得られます。

sed -n "$num"p $javaFile >> ~/Desktop/$1_sql.txt
for i in `seq 5 $max`
do
    lineNum=$(($num + $i))
    echo $lineNum
    sed -n "$lineNum"p $javaFile >> ~/Desktop/$1_sql.txt
done

$ javaFileはJavaファイルで、numは整数です。

答え1

スクリプトには何の問題もありません。たぶん、それはうまくいかないようにするラインターミネーターかもしれません。次のコマンドを使用して行終端を確認できます。

file YourScriptFile

「...with CRLF 行ターミネーター」などの結果が返された場合は、次のコマンドを使用して CRLF を LF ラインターミネーターに変更できます。

flip -u YourScriptFile

スクリプトファイルを再実行してください。

PS:問題に対する迅速で汚い解決策があります

cut -d $'\n' -s -f ${num},$((num+5))-$((num+max)) $javaFile

-d $'\n'目的のフィールド(この場合は行)を表すために\n区切り文字として使用する項目を示します。-f ${num},$((num+5))-$((num+max))フィールドはリストであり、等にする1-3こと1,3-10ができます。

関連情報