如何根据bash中的用户输入修改文件

时间:2017-11-20 16:13:48

标签: linux bash

我的文件包含以下内容

A     B     C
1     2     3
4     5     6
7     8     9

让我们说用户输入1 然后该文件应更改为

A     B     C
X     2     3
4     5     6
7     8     9

或者如果用户输入1,2那么文件应该改为

A     B     C
X     X     3
4     5     6
7     8     9

我是bash的新手,所以感谢任何帮助

2 个答案:

答案 0 :(得分:1)

awk救援!

$ awk -v cols="$cols" 'NR==2{n=split(cols,f,","); 
                             for(i=1;i<=n;i++) sub($i,"X")}1' file

假设您的用户输入已分配给bash变量cols。将值传递给awk,名称相同。找到值并一次只替换第二行;打印所有行。

答案 1 :(得分:0)

我们假设数据文件命名为matrix.txt,我们制作一个脚本来编辑数据文件的内容。

matrix.txt:

A     B     C
1     2     3
4     5     6
7     8     9

我们制作这个剧本:

matrix_script.sh:

read -p "Input: " input
sed "s/$input/X/g" matrix | tee matrix

这会改变你用X&#39;

写的数字

读取命令从键盘读取,直到您按下“输入”键。 &#39; -p&#39;选项在您可以写之前写入消息。输入&#39;变量是&#39;读取&#39;命令存储您编写的值。

&#39; sed&#39;命令用于替换其他字符。我们说sed我们想要替换&#39;输入&#39; &#39; X&#39;的变量&#39;矩阵中的字符&#39;文件。这会复制矩阵文件的内容,但不会在输入文件上写入更改。为了解决这个问题,我们复制了sed命令的输出(使用&#39; tee&#39;命令),其中一个输出将写入&#39;矩阵&#39;文件。

如果此脚本可以正常工作,请尝试并与我们联系。

再见