我有一个文本文件,在该文本文件中有一些以#开头的行。我想要做的是从#开头的行中创建新文件。因此,例如在文本文件中,如果有一行以文本“#FutureExams”开头,则脚本将占用该行并生成一个名为FutureExams.txt的新文件我想出的脚本当前运行但不提供我有什么结果。
find . -name "Data.txt" | while read line; do
if [ "$line" == "#"* ]; then
touch "$line".txt
fi
done
也许有一种更简单的编写脚本的方式。
答案 0 :(得分:0)
您可以使用GNU sed和xargs这样的管道
sed -rn "/^#/ {s/^#(.*)/\1.txt/g;p}" Data.txt | xargs touch
s
和p
命令应用于此类行s
命令会将#\1
后面的所有内容捕获到替换部分中,以便在其中附加.txt
答案 1 :(得分:0)
您可以尝试以下程序 -
vipin@kali:~$ cat kk.txt
vipin
#file1.txt
kumar
#file2.txt
vipin@kali:~$ cat kk.sh
while read line
do
var1=`cut -c1 <<<$line` ### cut first character
if [ "$var1" == "#" ]; then
var2=`cut -c2- <<<$line` ### cut from 2nd till last character of line
touch $var2 ### create file
fi
done < kk.txt
vipin@kali:~$ date
Sat Oct 29 22:10:27 EDT 2016
vipin@kali:~$ ./kk.sh
vipin@kali:~$ ls -ltr |tail -2
-rw-r--r-- 1 vipin vipin 0 Oct 29 22:10 file1.txt
-rw-r--r-- 1 vipin vipin 0 Oct 29 22:10 file2.txt
答案 2 :(得分:0)
使用grep
,cut
和touch
的简单单线:
for i in $(grep '^#' Data.txt |cut -c2-); do touch "$i".txt; done