Как удалить 0 из второго столбца в файле

Мое правило, чтобы применить своп в любой системе - иметь ответ на это:

  • Какова цель системы?
  • Сколько памяти будет потреблять приложения?
  • Это критическая система?
  • Мне нужно временное дисковое пространство для передачи файлов?
  • Прогнозируемая скорость роста приложений?

Когда я получаю ответ на эту информацию, которую я размещаю систему соответственно. В предыдущие годы я делал правил от Sun Microsystem. До 16 ГБ в два раза больше оперативной памяти для обмена, от 16 ГБ на ту же сумму. Но с другой стороны, если у вас достаточно оперативной памяти, и ваши приложения не используют своп насильственно, вы можете опустить своп. Если вам нужно, это просто вопрос выложить новый диск или LUN и настроить своп. Правило солнца, применяемое в основном потому, что на Solaris в случае «ядра паники» память будет полностью выброшена на сумму для дальнейшего анализа.

0
18.06.2015, 09:58
4 ответа

Вы можете использовать следующий awk для этого, чтобы гарантировать удаление только ведущих нулей из второго столбца

    awk '{gsub("^0","",$2); print $1,$2}' yourfile.txt
0
28.01.2020, 04:56

И в удар вы можете использовать:

while read username mobile
do
    echo "${username} ${mobile/0/}"
done < inputfile
0
28.01.2020, 04:56

Для автоматического монтирования всего в /etc/fstab , но попробуйте сначала сделать точки монтирования, вы можете использовать один лайнер, например:

$ grep -E '^\s*/dev' /etc/fstab | awk '{ print $2 }' | xargs mkdir -p
$ mount -a

Разбивка:

Поиск всех записей fstab , устанавливающих физические устройства (не например, procfs или tempfs):

grep -E '^\s*/dev' /etc/fstab

Выберите второй столбец (разделенный местами или вкладками), который является точкой монтирования:

awk '{ print $2 }'

И сделать каждый из этих каталогов, включая любые предшественники

xargs mkdir -p
-121--59482-

Опираясь (и несколько упрощая) ludvik02 sed ответ:

AA='"abcd efgh" "ijkl mnop" "qrst uvwxyz"'
AA1=$(echo "$AA" | sed -r 's/^([^"]*"){1}([^"]*).*/\2/')
AA2=$(echo "$AA" | sed -r 's/^([^"]*"){3}([^"]*).*/\2/')
AA3=$(echo "$AA" | sed -r 's/^([^"]*"){5}([^"]*).*/\2/')
(Note that                        this ↑                        is different on every line.)

Опция -r для sed включает расширенные регулярные выражения. Мы должны использовать { n } , что означает n вхождений предшествующего regex. ([^ «] *») - соединение (группа) regex, которое соответствует любое количество символов, отличное от «, заканчивается » . Пример входной последовательности может совпадать с этим regex до шести раз (потому что он содержит шесть символов "); с ... вставлены для различения промежутков между последовательностями, эти вхождения являются

"abcd efgh" ... "ijkl mnop" ... "qrst uvwxyz"
↑↑--------↑↑----↑↑--------↑↑----↑↑----------↑
1    2       3       4       5        6

Совпадение любого нечетного числа (например, трех) вхождений, которые потребляют все до и включая n (например, третий) символ «, т.е. символ » в начале ( n + 1 )/2) й (например, второй) процитированный ряд. Тогда ([^ "] *) соответствует (и группирует) всему (но не включая) символ ( n + 1) й ", то есть символ " в конце второго процитированного ряда. Так что эта группа (вторая группа) соответствует второй процитированной последовательности. Наконец, . * потребляет остаток входного ряда. Тогда мы заменим всю входную строку на \2 , значение второй группы:

"abcd efgh" ... "ijkl mnop" ... "qrst uvwxyz"
↑↑--------↑↑----↑⇑=======⇑⇈≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡⇈
1    2       3
↑---------------↑⇑=======⇑⇈≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡⇈
        \1          \2          (unnamed)
-121--102671-

Дайте попробовать этот фрагмент кода:

sed 's/\[ 0 ]//g' test.1

Обратите внимание, что есть место до [

, например

root@SHW:/tmp # cat test.1 
**Current Format**
username        mobile
zzz             03333012345
123             03212334343
245             3712323689
root@SHW:/tmp # sed 's/\ [0]//g' test.1 
**Current Format**
username        mobile
zzz            3333012345
123            3212334343
245             3712323689

Это работает для меня на ubuntu-14.04

0
28.01.2020, 04:56

Использование Perl:

< inputfile perl -pe 's/ 0([0-9]+)$/ $1/' > outputfile
  • -p : помещает while (<>) {[...]} перебирает сценарий и печатает обработанные строки
  • -e : читает сценарий из аргументов

Разбор команды Perl:

  • s : подтверждает выполнение подстановки
  • / : запускает шаблон
  • 0 ([0-9] +) $ : сопоставляет и группирует одну или несколько цифр в конце строки, которой предшествует цифра 0, которой предшествует символ
  • / : останавливает шаблон / запускает строку замены
  • $ 1 : заменяет пробелом, за которым следует захваченная группа
  • / : останавливает заменяющую строку / запускает модификаторы
0
28.01.2020, 04:56

Теги

Похожие вопросы