то никаких проблем. Но если образец записать в переменную (со всеми кавычками, естесственно) и подставить в команду или сгенерить его с помощью `echo "'\"$line\""` ....
sgrep_arg="'\"$line\"'"
cat $IN_TMP_FILE | sgrep -o "%s:%r\n" $sgrep_arg
# Или даже так
sgrep_cmd='sgrep -o "%s:%r\n"'"'\"$line\"'"
cat $IN_TMP_FILE | $sgrep_cmd
# Кстати, если занести в переменную все вместе с cat, то cat жалуется на неверный параметр :crazy:
$ cat /var/log/messages | sgrep -o "%s:%r\n" '"restart.\nMar"'
38:restart.
Mar
2357:restart.
Mar
4950:restart.
Mar
7301:restart.
Mar
$ s='"restart.\nMar"'
$ cat /var/log/messages | sgrep -o "%s:%r\n" $s
38:restart.
Mar
2357:restart.
Mar
4950:restart.
Mar
7301:restart.
Mar
в шеле то что внутри одиночных кавычек вообще не обрабатывается и ничего не раскрывается. Исключения - некоторые ESC символы, вроде \a,\n,\b и проч.
Переменные внутри двойных кавычек раскрываются, кроме того, одиночная кавычка внутри двойных считается обычным символом.
"'\""$line"\"'"
на самом деле три строки записанные друг за другом (вплотную)
"'\"" Это одиночная и за ней двойная кавычка
$line переменная
"\"'" это двойная и затем одиночная кавычка, в итоге, если в line равно 1, то всё выражение
'"1"'
Я, если честно, так и не понял, чего вы хотите этим всем добится...