Вы можете использовать lspci, но вам нужно выполнить grep для класса PCI NETWORK (02):
$ lspci -nn | grep '\[02'
00:19.0 Ethernet controller [0200]: Intel Corporation 82579LM Gigabit Network Connection [8086:1502] (rev 04)
03:00.0 Network controller [0280]: Intel Corporation Centrino Ultimate-N 6300 [8086:4238] (rev 3e)
awk с итерацией по всем, кроме первого поля, и преобразованием строк в нижний регистр с помощью функции tolower():
awk '{out=""; for (i=2; i<=NF; i++) out=out" "tolower($i); print $1out}' file.txt
paste, cut и sed, с помощью подстановки процесса:
paste -d ' ' <(cut -d' ' -f1 file.txt) <(cut -d' ' -f2- file.txt | \
sed -E 's/([[:upper:]])/\L\1/g')
Это предостережение об открытии файла дважды.
Только с bash, используя расширение параметра для преобразования случаев:
while IFS=' ' read -r i j; do echo "${i} ${j,,}"; done <file.txt
Пример:
$ cat file.txt
1 ONE
2 TWO TWO
3 THREE THREE THREE
$ awk '{out=""; for (i=2; i<=NF; i++) out=out" "tolower($i); print $1out}' file.txt
1 one
2 two two
3 three three three
$ paste -d ' ' <(cut -d' ' -f1 file.txt) <(cut -d' ' -f2- file.txt | sed -E 's/([[:upper:]])/\L\1/g')
1 one
2 two two
3 three three three
$ while IFS=' ' read -r i j; do echo "${i} ${j,,}"; done <file.txt
1 one
2 two two
3 three three three
Поздний:
Просто для удовольствия, другой подход на основе python:
python3 -c "for l in open('f'): l = l.split(' ',1); print(l[0], l[1].strip().lower())"
Где 'f' - файл, между кавычками.
Этот подход предполагает, что файл не имеет пустых строк.
l = l.split(' ',1)
Затем вторая часть (все столбцы, но первая) опускается: l[1].strip().lower()
и объединенный результат напечатан: print(l[0], l[1].strip().lower())
В файле :
EEN AAP OP EEN FIETS
2 EEn banaan IS LEKKER
MIJN tante in Marokko
1 ONE
2 TWO TWO
3 THREE THREE THREE
Выход:
EEN aap op een fiets
2 een banaan is lekker
MIJN tante in marokko
1 one
2 two two
3 three three three
Perl-подход с использованием функции lc():
$ perl -lne 'print lc($_)' < input.txt
1 one
2 two two
3 three three three
Perl :
$ python -c "import sys;print ''.join([l.lower() for l in sys.stdin])" < input.txt
1 one
2 two two
3 three three three
отправить входной файл как stdin к команде python с использованием перенаправления оболочки < с использованием sys, прочитайте все строки, используя понимание списка (структура l for l in list), одновременно используя метод .lower(), результирующий список строк объединяется в одну строку и распечатывается [ ! d4] Если вы хотите удалить конечную новую строку, вы можете сделать это, добавив одну запятую в конец для Python 2 (по умолчанию для команды python):
$ python -c "import sys;print ''.join([l.lower() for l in sys.stdin])," < input.txt
Для Python 3, функция печати отличается, и у нее есть другой способ удаления конечной новой строки - с помощью ключевого слова end:
$ python3 -c "import sys;print(''.join([l.lower() for l in sys.stdin]),end='')" < input.txt
Предыдущие подходы предполагают, что первый столбец является числовым как в примере OP. Для общего подхода, в котором мы хотим преобразовать только непервые столбцы, мы можем сделать это в perl:
$ cat input.txt
1 ONE
SOMETHING TWO TWO
$!@# THREE THREE THREE
$ perl -ane 'print $F[0]; print map { " " . lc($_)} @F[1..$#F];print "\n"' < input.txt
1 one
SOMETHING two two
$!@# three three three
В python для удобства чтения мы можем сделать скрипт:
#!/usr/bin/env python
import sys
for line in sys.stdin:
words = line.strip().split()
case_words = [ word.lower() for word in words[1:] ]
print( " ".join([words[0]]+case_words) )
Что работает так же, как и в примере perl:
$ ./lowercase_columns.py < input.txt
1 one
SOMETHING two two
$!@# three three three
Вы можете использовать расширение нижнего регистра \L GNU sed:
sed -r 's/([^ \t]+\s)(.*)/\1\L\2/' file
awk с итерацией по всем, кроме первого поля, и преобразованием строк в нижний регистр с помощью функции tolower():
awk '{out=""; for (i=2; i<=NF; i++) out=out" "tolower($i); print $1out}' file.txt
paste, cut и sed, с помощью подстановки процесса:
paste -d ' ' <(cut -d' ' -f1 file.txt) <(cut -d' ' -f2- file.txt | \
sed -E 's/([[:upper:]])/\L\1/g')
Это предостережение об открытии файла дважды.
Только с bash, используя расширение параметра для преобразования случаев:
while IFS=' ' read -r i j; do echo "${i} ${j,,}"; done <file.txt
Пример:
$ cat file.txt
1 ONE
2 TWO TWO
3 THREE THREE THREE
$ awk '{out=""; for (i=2; i<=NF; i++) out=out" "tolower($i); print $1out}' file.txt
1 one
2 two two
3 three three three
$ paste -d ' ' <(cut -d' ' -f1 file.txt) <(cut -d' ' -f2- file.txt | sed -E 's/([[:upper:]])/\L\1/g')
1 one
2 two two
3 three three three
$ while IFS=' ' read -r i j; do echo "${i} ${j,,}"; done <file.txt
1 one
2 two two
3 three three three
Поздний:
Просто для удовольствия, другой подход на основе python:
python3 -c "for l in open('f'): l = l.split(' ',1); print(l[0], l[1].strip().lower())"
Где 'f' - файл, между кавычками.
Этот подход предполагает, что файл не имеет пустых строк.
l = l.split(' ',1)
Затем вторая часть (все столбцы, но первая) опускается: l[1].strip().lower()
и объединенный результат напечатан: print(l[0], l[1].strip().lower())
В файле :
EEN AAP OP EEN FIETS
2 EEn banaan IS LEKKER
MIJN tante in Marokko
1 ONE
2 TWO TWO
3 THREE THREE THREE
Выход:
EEN aap op een fiets
2 een banaan is lekker
MIJN tante in marokko
1 one
2 two two
3 three three three
Perl-подход с использованием функции lc():
$ perl -lne 'print lc($_)' < input.txt
1 one
2 two two
3 three three three
Perl :
$ python -c "import sys;print ''.join([l.lower() for l in sys.stdin])" < input.txt
1 one
2 two two
3 three three three
отправить входной файл как stdin к команде python с использованием перенаправления оболочки < с использованием sys, прочитайте все строки, используя понимание списка (структура l for l in list), одновременно используя метод .lower(), результирующий список строк объединяется в одну строку и распечатывается [ ! d4] Если вы хотите удалить конечную новую строку, вы можете сделать это, добавив одну запятую в конец для Python 2 (по умолчанию для команды python):
$ python -c "import sys;print ''.join([l.lower() for l in sys.stdin])," < input.txt
Для Python 3, функция печати отличается, и у нее есть другой способ удаления конечной новой строки - с помощью ключевого слова end:
$ python3 -c "import sys;print(''.join([l.lower() for l in sys.stdin]),end='')" < input.txt
Предыдущие подходы предполагают, что первый столбец является числовым как в примере OP. Для общего подхода, в котором мы хотим преобразовать только непервые столбцы, мы можем сделать это в perl:
$ cat input.txt
1 ONE
SOMETHING TWO TWO
$!@# THREE THREE THREE
$ perl -ane 'print $F[0]; print map { " " . lc($_)} @F[1..$#F];print "\n"' < input.txt
1 one
SOMETHING two two
$!@# three three three
В python для удобства чтения мы можем сделать скрипт:
#!/usr/bin/env python
import sys
for line in sys.stdin:
words = line.strip().split()
case_words = [ word.lower() for word in words[1:] ]
print( " ".join([words[0]]+case_words) )
Что работает так же, как и в примере perl:
$ ./lowercase_columns.py < input.txt
1 one
SOMETHING two two
$!@# three three three
Вы можете использовать расширение нижнего регистра \L GNU sed:
sed -r 's/([^ \t]+\s)(.*)/\1\L\2/' file
awk с итерацией по всем, кроме первого поля, и преобразованием строк в нижний регистр с помощью функции tolower():
awk '{out=""; for (i=2; i<=NF; i++) out=out" "tolower($i); print $1out}' file.txt
paste, cut и sed, с помощью подстановки процесса:
paste -d ' ' <(cut -d' ' -f1 file.txt) <(cut -d' ' -f2- file.txt | \
sed -E 's/([[:upper:]])/\L\1/g')
Это имеет смысл дважды открыть файл.
Только с bash, используя расширение параметра для преобразования случаев:
while IFS=' ' read -r i j; do echo "${i} ${j,,}"; done <file.txt
Пример:
$ cat file.txt
1 ONE
2 TWO TWO
3 THREE THREE THREE
$ awk '{out=""; for (i=2; i<=NF; i++) out=out" "tolower($i); print $1out}' file.txt
1 one
2 two two
3 three three three
$ paste -d ' ' <(cut -d' ' -f1 file.txt) <(cut -d' ' -f2- file.txt | sed -E 's/([[:upper:]])/\L\1/g')
1 one
2 two two
3 three three three
$ while IFS=' ' read -r i j; do echo "${i} ${j,,}"; done <file.txt
1 one
2 two two
3 three three three
Поздний:
Просто для удовольствия, другой подход на основе python:
python3 -c "for l in open('f'): l = l.split(' ',1); print(l[0], l[1].strip().lower())"
Где 'f' - файл, между кавычками.
Этот подход предполагает, что файл не имеет пустых строк.
l = l.split(' ',1)
Затем вторая часть (все столбцы, но первая) опускается: l[1].strip().lower()
и объединенный результат напечатан: print(l[0], l[1].strip().lower())
В файле :
EEN AAP OP EEN FIETS
2 EEn banaan IS LEKKER
MIJN tante in Marokko
1 ONE
2 TWO TWO
3 THREE THREE THREE
Выход:
EEN aap op een fiets
2 een banaan is lekker
MIJN tante in marokko
1 one
2 two two
3 three three three
Perl-подход с использованием функции lc():
$ perl -lne 'print lc($_)' < input.txt
1 one
2 two two
3 three three three
Perl :
$ python -c "import sys;print ''.join([l.lower() for l in sys.stdin])" < input.txt
1 one
2 two two
3 three three three
отправить входной файл как stdin к команде python с использованием перенаправления оболочки < с использованием sys, прочитайте все строки, используя понимание списка (структура l for l in list), одновременно используя метод .lower(), результирующий список строк объединяется в одну строку и распечатывается [ ! d4] Если вы хотите удалить конечную новую строку, вы можете сделать это, добавив одну запятую в конец для Python 2 (по умолчанию для команды python):
$ python -c "import sys;print ''.join([l.lower() for l in sys.stdin])," < input.txt
Для Python 3, функция печати отличается, и у нее есть другой способ удаления конечной новой строки - с помощью ключевого слова end:
$ python3 -c "import sys;print(''.join([l.lower() for l in sys.stdin]),end='')" < input.txt
Предыдущие подходы предполагают, что первый столбец является числовым как в примере OP. Для общего подхода, в котором мы хотим преобразовать только непервые столбцы, мы можем сделать это в perl:
$ cat input.txt
1 ONE
SOMETHING TWO TWO
$!@# THREE THREE THREE
$ perl -ane 'print $F[0]; print map { " " . lc($_)} @F[1..$#F];print "\n"' < input.txt
1 one
SOMETHING two two
$!@# three three three
В python для удобства чтения мы можем сделать скрипт:
#!/usr/bin/env python
import sys
for line in sys.stdin:
words = line.strip().split()
case_words = [ word.lower() for word in words[1:] ]
print( " ".join([words[0]]+case_words) )
Что работает так же, как и в примере perl:
$ ./lowercase_columns.py < input.txt
1 one
SOMETHING two two
$!@# three three three
Вы можете использовать расширение нижнего регистра \L GNU sed:
sed -r 's/([^ \t]+\s)(.*)/\1\L\2/' file
awk с итерацией по всем, кроме первого поля, и преобразованием строк в нижний регистр с помощью функции tolower():
awk '{out=""; for (i=2; i<=NF; i++) out=out" "tolower($i); print $1out}' file.txt
paste, cut и sed, с помощью подстановки процесса:
paste -d ' ' <(cut -d' ' -f1 file.txt) <(cut -d' ' -f2- file.txt | \
sed -E 's/([[:upper:]])/\L\1/g')
Это предостережение об открытии файла дважды.
Только с bash, используя расширение параметра для преобразования случаев:
while IFS=' ' read -r i j; do echo "${i} ${j,,}"; done <file.txt
Пример:
$ cat file.txt
1 ONE
2 TWO TWO
3 THREE THREE THREE
$ awk '{out=""; for (i=2; i<=NF; i++) out=out" "tolower($i); print $1out}' file.txt
1 one
2 two two
3 three three three
$ paste -d ' ' <(cut -d' ' -f1 file.txt) <(cut -d' ' -f2- file.txt | sed -E 's/([[:upper:]])/\L\1/g')
1 one
2 two two
3 three three three
$ while IFS=' ' read -r i j; do echo "${i} ${j,,}"; done <file.txt
1 one
2 two two
3 three three three
Поздний:
Просто для удовольствия, другой подход на основе python:
python3 -c "for l in open('f'): l = l.split(' ',1); print(l[0], l[1].strip().lower())"
Где 'f' - файл, между кавычками.
Этот подход предполагает, что файл не имеет пустых строк.
l = l.split(' ',1)
Затем вторая часть (все столбцы, но первая) опускается: l[1].strip().lower()
и объединенный результат напечатан: print(l[0], l[1].strip().lower())
В файле :
EEN AAP OP EEN FIETS
2 EEn banaan IS LEKKER
MIJN tante in Marokko
1 ONE
2 TWO TWO
3 THREE THREE THREE
Выход:
EEN aap op een fiets
2 een banaan is lekker
MIJN tante in marokko
1 one
2 two two
3 three three three
Perl-подход с использованием функции lc():
$ perl -lne 'print lc($_)' < input.txt
1 one
2 two two
3 three three three
Perl :
$ python -c "import sys;print ''.join([l.lower() for l in sys.stdin])" < input.txt
1 one
2 two two
3 three three three
отправить входной файл как stdin к команде python с использованием перенаправления оболочки < с использованием sys, прочитайте все строки, используя понимание списка (структура l for l in list), одновременно используя метод .lower(), результирующий список строк объединяется в одну строку и распечатывается [ ! d4] Если вы хотите удалить конечную новую строку, вы можете сделать это, добавив одну запятую в конец для Python 2 (по умолчанию для команды python):
$ python -c "import sys;print ''.join([l.lower() for l in sys.stdin])," < input.txt
Для Python 3, функция печати отличается, и у нее есть другой способ удаления конечной новой строки - с помощью ключевого слова end:
$ python3 -c "import sys;print(''.join([l.lower() for l in sys.stdin]),end='')" < input.txt
Предыдущие подходы предполагают, что первый столбец является числовым как в примере OP. Для общего подхода, в котором мы хотим преобразовать только непервые столбцы, мы можем сделать это в perl:
$ cat input.txt
1 ONE
SOMETHING TWO TWO
$!@# THREE THREE THREE
$ perl -ane 'print $F[0]; print map { " " . lc($_)} @F[1..$#F];print "\n"' < input.txt
1 one
SOMETHING two two
$!@# three three three
В python для удобства чтения мы можем сделать скрипт:
#!/usr/bin/env python
import sys
for line in sys.stdin:
words = line.strip().split()
case_words = [ word.lower() for word in words[1:] ]
print( " ".join([words[0]]+case_words) )
Что работает так же, как и в примере perl:
$ ./lowercase_columns.py < input.txt
1 one
SOMETHING two two
$!@# three three three
Вы можете использовать расширение нижнего регистра \L GNU sed:
sed -r 's/([^ \t]+\s)(.*)/\1\L\2/' file
Поздний:
Просто для удовольствия, другой подход на основе python:
python3 -c "for l in open('f'): l = l.split(' ',1); print(l[0], l[1].strip().lower())"
Где 'f'
- файл, между кавычками.
Этот подход предполагает, что файл не имеет пустых строк.
l = l.split(' ',1)
l[1].strip().lower()
print(l[0], l[1].strip().lower())
В файле:
EEN AAP OP EEN FIETS
2 EEn banaan IS LEKKER
MIJN tante in Marokko
1 ONE
2 TWO TWO
3 THREE THREE THREE
Выход:
EEN aap op een fiets
2 een banaan is lekker
MIJN tante in marokko
1 one
2 two two
3 three three three
Вы можете использовать расширение нижнего регистра \L
GNU sed
:
sed -r 's/([^ \t]+\s)(.*)/\1\L\2/' file
-r
использовать ERE s/old/new/
замените old
на new
([^ \t]+\s)
, сохраните некоторые символы, которые не являются пробелом или вкладкой, за которым следует пробел или вкладка (.*)
сохранить любые количество любых символов \1\L\2
печатает первую сохраненную часть без изменений, затем вторую сохраненную часть с нижней частью awk
с итерацией по всем, кроме первого поля, и преобразованием строк в нижний регистр с помощью функции tolower()
:
awk '{out=""; for (i=2; i<=NF; i++) out=out" "tolower($i); print $1out}' file.txt
paste
, cut
и sed
, с помощью подстановки процесса:
paste -d ' ' <(cut -d' ' -f1 file.txt) <(cut -d' ' -f2- file.txt | \
sed -E 's/([[:upper:]])/\L\1/g')
Это имеет оговорку о том, что вы открываете файл дважды.
Только с bash
, используя расширение параметра для преобразования случаи:
while IFS=' ' read -r i j; do echo "${i} ${j,,}"; done <file.txt
Пример:
$ cat file.txt
1 ONE
2 TWO TWO
3 THREE THREE THREE
$ awk '{out=""; for (i=2; i<=NF; i++) out=out" "tolower($i); print $1out}' file.txt
1 one
2 two two
3 three three three
$ paste -d ' ' <(cut -d' ' -f1 file.txt) <(cut -d' ' -f2- file.txt | sed -E 's/([[:upper:]])/\L\1/g')
1 one
2 two two
3 three three three
$ while IFS=' ' read -r i j; do echo "${i} ${j,,}"; done <file.txt
1 one
2 two two
3 three three three