Вы попробовали все USB-порты? Кроме того, Вы попытались смотреть в BIOS, чтобы видеть, мог ли это быть disapbled? Если это имеет USB, трудно полагать, что все порты повреждаются, хотя что-то, возможно, сдуло его в прошлом.
Тем не менее я думаю, что можно сделать это, но это могло бы быть болезненно. Это зависело бы, на какой системе Вы используете. Для моего (Ubuntu с Gnome), существует установка под "Универсальным Доступом", на вкладке "Pointing and Clicking", для "Кнопок мыши", которые позволяют Вам использовать клавиатуру.
У меня есть голова, что X-окна имеют способ использовать Ctrl-Shift-Numlock, но это ничего не делает в моей системе.
Я полагаю, что KDE имеет установку под панелью управления мыши, названной 'Указатель перемещения с клавиатурой (использующий цифровую клавиатуру)’.
Ниже приблизительно дюжина примеров того, как можно взять файл, такой как это:
$ cat k.txt
1
2
3
и преобразуйте его в этот формат:
1,2,3
Можно использовать эту команду для создания вышеупомянутого файла, если требуется манипулировать:
$ cat <<EOF > k.txt
1
2
3
EOF
Примеры ниже разделяются на 2 группы. Работают, которые "работают" и это "почти". Я оставляю их, потому что часто времена, которые столь же ценно видеть, почему что-то не работает, как это должно видеть, почему что-то делает.
Представлено большинство языков сценариев, с которыми я знаком. Некоторые представлены многократно, с тех пор как с известным акронимом, на который обычно ссылаются в Perl, TIMTOWTDI.
Примечание: Можно выгрузить запятую (,
) в примерах ниже и замене это с любыми символами Вы хотите, т.е. |
.
Эти фрагменты кода произведут желаемый вывод.
paste
команда:
$ paste -s -d ',' k.txt
1,2,3
sed
команда:
$ sed ':a;N;$!ba;s/\n/,/g' k.txt
1,2,3
$ sed ':a;{N;s/\n/,/};ba' k.txt
1,2,3
perl
команда:
$ perl -00 -p -e 's/\n(?!$)/,/g' k.txt
1,2,3
$ perl -00 -p -e 'chomp;tr/\n/,/' k.txt
1,2,3
awk
команда:
$ awk '{printf"%s%s",c,$0;c=","}' k.txt
1,2,3
$ awk '{printf "%s,",$0}' k.txt | awk '{sub(/\,$/,"");print}'
1,2,3
$ awk -vORS=, 1 k.txt | awk '{sub(/\,$/,"");print}'
1,2,3
$ awk 'BEGIN {RS="dn"}{gsub("\n",",");print $0}' k.txt | awk '{sub(/\,$/,"");print}'
1,2,3
python
команда:
$ python -c "import sys; print sys.stdin.read().replace('\n', ',')[0:-1]" <k.txt
1,2,3
$ python -c "import sys; print sys.stdin.read().replace('\n', ',').rstrip(',')" <k.txt
1,2,3
Bash mapfile
встроенный:
$ mapfile -t a < k.txt; (IFS=','; echo "${a[*]}")
1,2,3
ruby
команда:
$ ruby -00 -pe 'gsub /\n/,",";chop' < k.txt
1,2,3
$ ruby -00 -pe '$_.chomp!"\n";$_.tr!"\n",","' k.txt
1,2,3
php
команда:
$ php -r 'echo strtr(chop(file_get_contents($argv[1])),"\n",",");' k.txt
1,2,3
Протесты
Большинство примеров выше будет работать просто великолепно. Некоторые скрыли проблемы, такие как пример PHP выше. Функция chop()
на самом деле псевдоним к rtrim()
, таким образом, конечные пробелы последней строки будут также удалены.
Так также сделайте делает первый пример Ruby и первый пример Python. Проблема с тем, как они все используют тип операции, которая по существу "прерывает" прочь, вслепую, конечный символ. Это хорошо в для примера, что OP, если, но заботу нужно соблюдать при использовании этих типов лайнеров, чтобы удостовериться, что они соответствуют данным, которые они обрабатывают.
Пример
Скажите наш файл примера, k.txt
бывший похожий это вместо этого:
$ echo -en "1\n2\n3" > k.txt
Это выглядит подобным, но это имеет незначительные различия. Это не имеет запаздывающей новой строки (\n
) как исходный файл. Теперь, когда мы выполняем первый пример Python, мы получаем это:
$ python -c "import sys; print sys.stdin.read().replace('\n', ',')[0:-1]" <k.txt
1,2,
Это "всегда подружка невесты, никогда невеста" примеры. Большинство из них могло, вероятно, быть адаптировано, но при работе потенциального решения проблемы, когда это чувствует себя "принудительным", это - вероятно, неправильный инструмент для задания!
perl
команда:
$ perl -p -e 's/\n/,/' k.txt
1,2,3,
tr
команда:
$ tr '\n' ',' < k.txt
1,2,3,
cat
+ echo
команды:
$ echo $(cat k.txt)
1 2 3
ruby
команда:
$ ruby -pe '$_["\n"]=","' k.txt
1,2,3,
Bash while
+ read
созданный-ins:
$ while read line; do echo -n "$line,"; done < k.txt
1,2,3,
@slm, уже данный хороший ответ, но как Ваш вопрос "вывод формата xargs"
xargs -I{} echo -n "{}|" < test.txt
-I
опция "строк замены".{}
заполнитель для синтезируемого текста.Если Вы хотите избавиться от запаздывания |
можно использовать sed
сделать некоторую уборку:
$ xargs -I{} echo -n "{}|" < k.txt | sed -e 's/|$//'
1|2|3
Это старая нить, я знаю. OP запросил простым кодом, как это. Чтобы держать его близко к оригиналу, у меня простое решение.
cat k.txt | xargs
1 2 3
Использование SED
cat k.txt | xargs | sed 's/ /,/g'
1,2,3
или
cat k.txt | xargs | sed 's/ /|/g'
1|2|3
SED может выглядеть немного странно, но сломано, это имеет большой смысл.
для замены. G 'предназначен для Global: без этого он будет делать только первую замену на каждой новой линии. Так как вы используете «xargs», он отображает их как одна строка. Так что вы получите «1,2 3».
Разделитель используется для разделения. Я использовал / символ. Один интересный трюк: вы можете заменить разделитель с большинством любых других символов, пока мы сохраняем его тот же формат между цитатами. Так что это будет работать также ....
cat k.txt | xargs | sed 's# #,#g'
или
cat k.txt | xargs | sed 'sT T,Tg'
Очевидно, используя определенные символы, поскольку разделитель может быть запутанным, так что будьте умны.
xargs <k.txt | tr \ \|
Вам не нужно CAT
- просто пропустите ввод файла и - если не дано никакой другой команды - xargs
выйдут свой формат по умолчанию - что имеет вид с / Bin / Echo
(без переоценки C-escape C-Escape) .
XARGS
выложит пробел из головы / хвоста из входного файла и выжимают другие последовательности пробела до одного пространства. Это означает, что при прохождении файла из TR
в xargs
Как:
tr \\n \| <k.txt | xargs
... Prints ...
1|2|3|
... Проезжает Другой путь И работает только на ARGS , что xargs
Space-delimits делает ....
1|2|3\n
... потому что Xargs
печатает конечную тренажерную новую строку (как требуется для текстового файла) , но он не получается TR
.
Обратите внимание, что это (или любое другое решение, предлагаемое здесь) , не учитывается xargs
ввода. XARGS
пройдет буквально одиночные / двойные / с обратной котировкой, цитируемым нежилым пробелным пространством на входе, которые сами могут быть такими:
xargs <<\IN
1 2' 3'\' \'4
IN
1 2 3' '4
awk
Я предпочитаю более короткую альтернативу:awk -vORS=, 1 k.txt
– manatwork 02.09.2013, 15:39bash
:mapfile -t a < k.txt; (IFS=','; echo "${a[*]}")
– manatwork 02.09.2013, 15:42perl
и сначалаawk
имеет их также. – manatwork 02.09.2013, 15:44paste
один наверху. Это точно чтоpaste -s
для здесь. Это - стандартная команда и было бы самым эффективным. Все другие являются излишеством и/или не являются портативными или имеют ограничения. – Stéphane Chazelas 02.09.2013, 15:46mapfile
является относительно новым, включенbash
4.0. – manatwork 02.09.2013, 15:48