Извините, нет awk.
$ paste -d\| <(cut -d\| -f4 file) <(cut -d\| -f3 file) <(cut -d\| -f2 file) <(cut -d\| -f1 file)
London|First|Hunk|1
London|Second|Hero|2
Pow|First|Will|3
Pow|Second|Thomas|4
Berlin|First|Venus|5
$ sed -E 's/(.*)\|(.*\|)(.*\|)(.*)/\4|\3\2\1/' file
London|First|Hunk|1
London|Second|Hero|2
Pow|First|Will|3
Pow|Second|Thomas|4
Berlin|First|Venus|5
Вместо этого используйте любой из них:
grep -rn /sys/class/tty/* -e 0x40010000 2> /dev/null
grep -Rn /sys/class/tty/ -e 0x40010000 2> /dev/null
Glob в первой команде необходим для того, чтобы он следовал символическим ссылкам, которые не указаны в командной строке, поскольку содержимое /sys/class/tty
является символическими ссылками на содержимое /sys/devices/virtual/tty
и /sys/devices/platform/serial####/tty
.
-R
во второй команде следует за символическими ссылками по умолчанию, без необходимости в подстановке.
Я добавил 2> /dev/null
для отправки сообщений Input/output error
и Permission denied
на /dev/null
, поскольку вывод легче читать, когда все это не возвращается.
Записи в /sys/class/tty
являются символическими ссылками на каталоги в другой части /sys
, которая организована в соответствии с внутренним подключением устройств. grep -r
не переходит по символической ссылке на каталоги.
grep -R
следует символическим ссылкам, но следовать каталогам при рекурсивном обходе /sys
— плохая идея, потому что существуют бесконечные циклы.(/sys/foo/bar
— это ссылка на /sys/corge/wibble
, которая ссылается на/sys/foo
).
Так что указывайте пути точнее. Этого достаточно для поиска во всех файлах всех tty-устройств:
grep -l -r -x 0x40010000 /sys/class/tty/*/
Между прочим, поскольку вы уже знаете все содержимое файла и хотите знать имя файла, -n
бесполезна, а -l
дает вам четкий вывод. -x
помогает избежать ложных срабатываний (, но здесь это не обязательно, так как содержимое iomem_base
имеет фиксированную длину ).
Но поскольку вы знаете базовое имя файла, просто выполните поиск по нему.
grep -l -x 0x40010000 /sys/class/tty/*/iomem_base