DC: '\' (0134) не реализовано

Я использую технику запутывания, которая включает DC. Если вы передадите меньшую линию без обратной косой черты, вы получите это.

root@revolt:~/Working/Bash# cat temp.text
[q]sa[ln0=aln256%Pln256/snlbx]sb806639340302927610462193083720snlbxq

root@revolt:~/Working/Bash# cat temp.text | dc
Hello world.

Однако, если вы попробуете что-то большее, как

root@revolt:~/Working/Bash# cat temp.text
[q]sa[ln0=aln256%Pln256/snlbx]sb331832177645759643350464573357407988278700985112761888842542077811521\
080128221484476741215560snlbxq

Там, где заканчивается обратная косая черта на линии, это происходит:

root@revolt:~/Working/Bash# cat temp.text | dc
dc: '\' (0134) unimplemented
Hel���t��root@revolt:~/Working/Bash# 

Однако, если вы хотите запустить это

root@revolt:~/Working/Bash# dc<<<[q]sa[ln0=aln256%Pln256/snlbx]sb331832177645759643350464573357407988278700985112761888842542077811521\
> 080128221484476741215560snlbxq
Hello world.
Hello world.
Hello world.

Работает просто отлично. Приведенный выше пример печатает dc<<< а затем скопируйте и вставьте строку с обратной косой чертой. Weird.

У меня такие вопросы:

  1. Есть ли способ sed/cut/awk/etc. удалить обратную косую черту и поместить все строки в одну строку без обратной косой черты?

    или же

  2. Есть ли способ помочь dc интерпретировать обратную косую черту?

1 ответ

Решение

Вы можете справиться с этим, используя манипуляции со строками BASH:

s=$(<temp.txt)
dc <<< "${s//\\[[:space:]]/}"
Hello world.
Hello world.
Hello world.

"${s//\\[[:space:]]/}" удалит все экземпляры \ с последующим переводом строки из данных файла.

Другие вопросы по тегам