У меня есть этот простой скрипт:
#!/bin/bash
# This command removes the last "\n" (line feed) character from the file specified as parameter
#
# Params:
# $1 [FILE_NAME] - the name of the file to trim
if [ "$1" = "" ]; then
echo "perlrmlastlf - A command utility which uses perl to remove the last \"\n\" (line feed) character inside a file"
echo $'\r'
echo "perlrmlastlf: missing FILE_NAME"
echo "Usage: perlrmlastlf [FILE_NAME]"
echo $'\r'
exit;
fi
if [[ ! -f $1 ]]; then
echo "perlrmlastlf - A command utility which uses perl to remove the last \"\n\" (line feed) character inside a file"
echo $'\r'
echo "perlrmlastlf: wrong FILE_NAME $1: No such file"
echo "Usage: perlrmlastlf [FILE_NAME]"
echo $'\r'
exit;
fi
FILE=$1
TMP_FILE="$FILE.tmp.perlrmlastlf"
perl -0 -pe 's/\n\Z//' $FILE > $TMP_FILE
mv $TMP_FILE $FILE
Теперь я могу использовать его только с допустимым именем файла в качестве параметра, но что если я хочу, чтобы он получал выходные данные из канала и использовал их вместо $ 1 [FILE_NAME]? Как это:
user:machine ~$ cat file.txt | pcregrep -o "some pattern" | perlrmlastlf
user:machine ~$ # output of `cat file.txt | pcregrep -o "some pattern"` but without last \n, if present
И perlrmlastlf
получить выходные данные конвейера и использовать их, а затем вывести обратно в консоль соответствующую строку без последнего символа \n
Как я могу сделать это?