この答えが何を意味するのか教えてくれる人はいますか?
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
ができます。