Para eliminar todas las líneas de un archivo que tienen caracteres de control:
grep -v '[[:cntrl:]]' file >file.modified
Esto creará un nuevo archivo llamado file.modified
. El indicador -v
a grep
invierte el sentido de la coincidencia realizada por la utilidad y [[:cntrl:]]
coincidirá con las líneas que contienen caracteres de control.
Para eliminar líneas que no tienen -caracteres imprimibles en la configuración regional C (, por ejemplo, caracteres Unicode):
LC_ALL=C grep -v '[^[:print:]]' file >file.modified
Использование оболочки bash
:
while IFS= read -r line; do
name=${line%%::*}
contents=${line#*::}
echo -e "$contents" >"$name"
done <fileA.txt
Это считывает входной файл построчно и извлекает имя выходного файла и содержимое из прочитанной строки, используя замену стандартных параметров . ${variable%%pattern}
удаляет самую длинную совпадающую подстроку из конца $variable
, которая соответствует pattern
, а ${variable#pattern}
удаляет самую короткую совпадающую подстроку из начала $variable
, которая соответствует pattern
.
Значение line
считывается с помощью read -r
, так что обратная косая черта сохраняется в данных. Без -r
read
не сохранили бы их. Мы также устанавливаем IFS
в пустую строку перед вызовом read
, чтобы из данных не удалялись фланкирующие пробелы.
Вывод выполняется с использованием echo -e
, который интерпретирует escape-последовательности в данных. Это означает, что он заменит \n
в данных фактическими символами новой строки.
После запуска у вас будет
$ ls -l
total 12
-rw-r--r-- 1 kk wheel 71 Jun 17 16:28 fileA.txt
-rw-r--r-- 1 kk wheel 24 Jun 17 16:31 trans_fileA
-rw-r--r-- 1 kk wheel 16 Jun 17 16:31 trans_fileB
$ cat trans_fileA
abcd
dfghc
091873
hhjj
$ cat trans_fileB
a11d
11hc
73345
Похожие:
Моя первая мысль была sed Учитывая ваш файл, fileA.txt выше:
abcd\ndfghc\n091873\nhhjj
и запуск sed
против newline.sed
, который содержит:
s/\\n/\
/g
таким образом
sed -f./newline.sed <./fileA.txt >./trans_fileA
вернет эти результаты вtrans_fileA
:
abcd
dfghc
091873
hhjj
Это был самый простой способ выполнить вашу задачу.
ХТХ